There are no hard limits for (1) and (3). Available GPU memory depends on the kind of Apple device, though no more than 128 MB of total VRAM usage (textures, meshes, frame buffers, etc…) is a good rule of thumb for mobile in general (many Android drivers limit it to something around that, even if they have far more memory). If you are only targeting newer iOS devices, you can go higher, etc…
RE: (1), the limit for a single texture on ES2 is 2048x2048, but using a lot of large textures can quickly bloat your download size or runtime memory usage.
RE: (3), it depends on what other stuff you are rendering, but it is rare to end up vertex bound on iOS (shadowing skinned meshes can be, but static geometry will probably never be bottlenecked here).
(2) does have a hard limit: You can have one dynamic directional light at runtime. Every other light needs to either be static and baked, or it will not affect the lighting at runtime.
RE: Batching: Multiple meshes using the same materials and textures will be sorted together, reducing CPU side overhead on the render thread, but they not be instanced on the GPU/driver side as ES2 doesn’t support instanced rendering. Merging meshes together can be a real benefit on mobile, although you have to balance the CPU savings versus the GPU overhead of drawing extra stuff that could have been culled otherwise.