Do I have to understand GLSL?
Technically, no. OpenGL versioning, to be frank, is atrocious. The core specification is defined but not always enforced. OpenGL is implemented by the driver which is supplied by the vendor. Despite many functions and extensions being deprecated, the driver is still free to implement them. So the versioning is a little misleading, but you should try to adhere to it.
For example, if you want to build against OpenGL 4.0, you must know GLSL. Fixed function programming does not exist there. However, if you wanted to mix in older functionality, you should be just fine.
OpenGL is just extremely terrible with this. The versioning is horrendously wonky. There's no unification there.
How do I use GLSL with OpenGL and C++?
GLSL is a programming language itself. It shares much of C's syntax but has special keywords and constructs that the GLSL parser understands. You simply write plain GLSL text into a file, read it in, parse and compile (GL has functions for this), and the compiled binary is uploaded to the device as an executable program. Vertex programs execute for every vertex, fragment programs execute for every fragment, and so on...
What exactly is the OpenGL context? The definition given is vague and doesn't explain anything.
The context is simply the OS's way of addressing the OpenGL subsystem part of your device. It is a bridge between the OS and the OpenGL device itself. Linux has it's own methods of initializing an OpenGL context, OSX, Win32, etc...
And how do I use shaders?
Think of them as small programs (that's really what they are). They execute on the GPU for all of its vertex processors (vertex shaders), and compute cores (fragment shaders, domain, hull, and general computing). Every time a vertex comes in, it runs through that vertex program. After it's compiled, you get a handle to it...like every asset in OpenGL. You then bind it as current before you render...then you render. Then you unbind it. Read more about shader states.
How do I get something onto the screen?
If getting something on the screen is your only goal, as stated before, go to NeHe.
What is GLuint?
It is a typedef for the standard "unsigned int" type. Promotes code portability.
Why are most of the parameters using terms that I don't understand?
Because you've just started. For the most part the terms in the text should match up with the API implementation. You might be underestimating what it really takes to fully understand graphics intimately in terms of your education. Many of the concepts are high level, but getting something rendering should not be terribly difficult. Again..what is it that you want? Do you just want pretty triangles on the screen or do you really want to understand what the heck is going on?
Why does glVertexAttribPointer come up as "identifier not found", while other functions of OpenGL don't have that problem?
Windows has not supported OpenGL as part of the OS for a number of years now. Even before that it was not regularly updated, therefore much of the NEW functionality is implemented as an "extension" to the core specification. It will not be defined in gl.h, because that header file is probably over 10 years old. You will see it in glext.h. However, you'll see that it's defined as a function pointer, therefore you must use "wgl" (Windows's OpenGL) to obtain the address of that function's implementation before you can use it.
GLEW is a library that makes this much easier for you.
How does glut come into this? Why can't I figure out how to use modern OpenGL with glut?
GLUT is extremely old and is also not updated and hasn't been for several years. GLUT has nothing to do with OpenGL and is a "utility library" that is auxiliary to OpenGL itself. It's just a helper.
Where do people learn how to use Modern OpenGL?
Consume every resource you can. Challenge yourself to write things that you don't think you can write. Do the hard things. Go to forums, chats, etc. The info is definitely out there. Again, you're still new.