If the implementation you’re running on supports OES_matrix_palette (which should be the case on every iPhone and iPod touch so far), you can transform each vertex by a weighted mix of a few matrices from a palette. The maximum number of matrices per vertex and palette size are implementation-dependent, but the spec mandates at least 3 matrices from a palette of at least 9.
On newer devices, matrix palette transformation is always performed on the GPU. On older hardware, you may wind up with a software fallback if you enable more than 2 fixed-function lights. You may still want to consider using your own software vertex transformation if vertex size becomes a bottleneck on older devices.