There are a lot of libraries out there, and I would imagine their functionality is basically the same. . .
Being as it is that I have no experience, which one would you suggest?
There are a lot of libraries out there, and I would imagine their functionality is basically the same. . .
Being as it is that I have no experience, which one would you suggest?
Yeah, you basically need 1 library to abstract the ugly wgl/glx calls and collect input (GLFW, SDL, SFML, GLUT(ancient and unsupported), FreeGLUT(oldfashioned)), another to load the function pointers (glad, glloadgen, GL3W, GLEW, GLee, ...) where the newer ones allow you to generate their C code tuned to your needs (choose GL version, core/compatibility and which extensions to avoid always loading a thousand functions and extensions you never use).
http://www.glfw.org/faq.html#why-doesnt-your-glh-have-the-functions-i-need
See also this recent, similar question.
In summary, GLFW is what its name says ("GL Frame Work"), a framework. That is, it enforces a kind of structure on your program. Rather than deciding what to do when, you call some initialization functions and tell the framework more or less what you expect, and then the framework calls you back at the appropriate times (for example when the user presses a key or moves the mouse, resizes the window). All you need to do is write handlers for that, the logic behind it is already written. In addition, GLFW comes with a set of useful utility functions. You still write GL code to do the drawing, though.
GLEW on the other hand handles the loading of extensions ("GL Extension Wrangler"). What does that mean? Unlike another well-known graphics API from Microsoft, OpenGL does not come as a set of distinct, entirely different, incompatible versions with different libraries which on the other hand have exactly defined functionality and specs. Instead, OpenGL is a somewhat blurry "everything at the same time, and none" and built in an extendable and heavily extended manner, which is not at all obvious or intuitive to a beginner.
In addition to the base functionality, you can use extensions, if they are supported (there are well over 300 extensions, and the average graphics card driver supports well over a hundred). Additionally, all versions after 1.2 technically work as-if extensions. That is, you cannot just link with opengl32.dll and expect that everything will magically work for OpenGL 3.0 or OpenGL 4.4.
Instead, after creating a context (GLFW will do that for you!) you need to query your context for the supported version and for supported extensions that you may wish to use. Then you must set up a lot of function pointers and initialize them. This is a lot of nasty and error-prone work even for someone reasonably experienced, lest a beginner.
GLEW does all that.
So basically, with GLEW, you call one function to init everything, and then you can very comfortably check what you have available, and use it right away... without having to deal with that nasty stuff.
To answer the question "Which one should I use?" -- in any case you want to use GLEW (or an alternative, but GLEW works fine), but you most likely want to use both GLEW and GLFW since it makes your life easier.