In OpenGL ES 3.0, we have the minimum number of uniform vectors available in both the vertex and fragment shaders:
const mediump int gl_MaxVertexUniformVectors = 256;
const mediump int gl_MaxFragmentUniformVectors = 224;
If we have a uniform that is defined the same in both the vertex and fragment shaders, does it exist within the compiled program only once, and if so which of these limits does it's storage space negate from?
The ES 3.0 spec. needlessly complicates the discussion of uniform storage (hence, I referenced the 2.0 spec). In a nutshell this limit refers to the amount of uniform space an individual stage has on reserve. A GLSL program may store more than 256 uniform locations total, but no individual stage is required to be able to use more than 256 at a time.
OpenGL ES 2.0 Specification - 2.10 Vertex Shaders (Uniform Variables) - pp. 35
Though it is highly implementation specific, you could think of the set of uniforms as overall program storage and then within each stage those uniforms have to be assigned to a limited set of registers from the GPU's register file before they can be used. This is one good thing about establishing active vs. inactive uniforms statically at compile/link time, it can significantly reduce the storage requirements for each stage for a linked program with inactive code paths.
By the way, if this were a limit that applied to all stages, following normal GL nomenclature the limit would most likely be named:
..._MAX_COMBINED_...
and would not include the name of a particular stage.