Actually there is a very large difference between OpenGL ES 1.1 and 2.0. The two APIs are incompatible with each other. For example, all modelview and projection matrices are the users responsibility in 2.0, calls such as glFrustum, glRotate, glPushmatrix, etc... are removed. You need to write both a vertex and fragment shader to handle vertex transformation and color output at a minimum. If you want lighting, you will have to do that in the shader as there is no GL Lighting (which, IMHO, is a good thing). You can stay with the OpenGL 1.1 APIs since they are still supported, but in most cases this is turned into a OpenGL 2.0 calls by the driver on a runtime basis. This can be a problematic issue since shaders need to be built, compiled, linked and loaded on the fly as the GL state changes. This can lead to performance issues if you are changing state enough that new shaders keep needing to be built. Usually, once a shader is built by the driver, it keeps it in a cache (flushed at the end of the application or earlier if cache is full) to be used again if that particular GL state comes up again to avoid the cost of building a new shader. The bottom line, if you need to support older, non OpenGL ES 2.0 HW, then go ahead and stick with OpenGL ES 1.1, otherwise it is wise to invest in learning and using OpenGL ES 2.0.