OpenGL is a graphics library. If you write code that makes calls to that library you can create graphics in a window. C++ and Java have textbooks using those languages with the OpenGL library.
GTK is the original Linux Graphics Tool Kit to make Windows with decorations, or buttons, or checkboxes.
SDL is Simple DirectMedia Layer, a library that not only does graphics but also audio, CD ROM operations and networking.
A Library is a bundle of code that takes care of the low-level hardware operation so that you can write code that does functions. In other words, you don't care how a Mac or a Windows box creates its desktop windows, you code a desktop window using the library.
edit:============
You could use a combination of the above code libraries, or just one of the technologies. GTK is predominately widgets, but it does include a canvas widget you can insert into a window. Take the Python programming language for instance, python runs at the OS level and thus can bridge the OS with GTK, a database and invoke a Java program all under the command of python. The basic problem is any of these libraries require you stay with one platform, eg Windows, Mac, Linux and then the users of your software will have to have the same hardware. If you re-write some of the code then a Windows program could become a Linux program. DirectX is Microsoft only. OpenGL is OpenSource but offers the best advanced texturing on 3D applications. OpenGL requires an add-on graphics card that supports OpenGL.
For all-in-one programming it is hard to beat Java which includes its own internal widgets and graphics functions. I've used GTK+ on a Linux box to utilize additional video libraries and also for bulk changes on a folder of digital photos. You will find more textbook documentation for Java than you will for any of the other mentioned technologies.