Thanks to extension spaghetti, there isn't a single OpenGL API, it is like programming for the Web or UNIX flavours, you end up with multiple code paths depending on the extensions available, thus it is like programming against multiple APIs even if it says OpenGL in the box.