Optimal VBO array formats in OpenGL ES

I’m trying to find information about what vertex array formats to use for VBOs in OpenGL ES for mobile systems, to get optimal performance (I need 2D short/float vertex coordinates and 2D float texture coordinates).

I’m a bit confused: buffer memory is potentially allocated in video memory for direct GPU access, but the actual array format of the data is not known to GL until glDrawElements is called (after the data has already been uploaded with glBufferData).

What happens if the array format is not supported in HW? Will another, temporary buffer be allocated and a conversion be made?