You can query the maximum value with glGet(GL_MAX_VARYING_VECTORS). The OpenGL ES 2.0 manual pages have more information about this: http://www.khronos.org/opengles/sdk/docs/man/
It’s worth noting that on some PowerVR platforms, the compiler will not pack for you - if 8 varying vectors are available, you need to ensure that you are only using a maximum of 8 vec4 varyings. This means that you may not be able to, for example, have 7 vec4 varyings and 4 float varyings as the compiler may not be able to pack this into 8 vec4’s automatically.
If you run the free app: OpenGL Extension Viewer (available on both iOS and Android), you can find many information about OpenGL ES capability.
Yes - if you need 12 scalar varying values, it will be best to pack them into vec4’s. This should solve your problem