I can't find a really good example quickly looking through the javadoc, but why do the different versions (GL11, GL15, GL30, etc.) sometimes have the same methods? The javadoc also says that these methods "overload" the methods (they may refer to the 'original' methods).
EDIT Overloading is not relevant in this context.
There are multiple versions of OpenGL, each one adding new functions and some deprecating old ones. The different GL classes correspond to each version (GL11 = OpenGL 1.1, GL15 = OpenGL 1.5, GL30 = OpenGL 3.0). I'm not very familiar with LWJGL, but it probably offers compile-time warnings for deprecated functions and only has the functions supported in that version.
https://www.opengl.org/wiki/History_of_OpenGL
EDIT
To respond to the comments, one version is generally not "better" than another, it's just supporting a newer specification based on what you want the minimum spec for your program to be and what the user's machine supports.
Looking into LWJGL docs, each GLXX
class does not support the entire API, just the functions that were added in that version of the specification. For example, glActiveTexture (Page lists "Core since version: 1.3") was added in OpenGL 1.3, so the function and all of it's parameters are included in the GL13 class.
Another different example is the GL_SRGB constant in the GL21 class. OpenGL 2.1 added support for sRGB textures in the glTexImageXD
class of functions, which is defined in GL11
here.
If your machine supports OpenGL 2.1+, you'd be able to use GL_SRGB as an argument. Otherwise the function will give you an error. The same goes for newer formats added as part of newer specs. If you have OpenGL 4.3 support you'd be able to use COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
, etc.