For newbies, the choice generally boils down to "fixed-function" or "programmable" pipeline.
The fixed-function pipeline
has been around since the early days of GL. It has utilities like glFog and glLight that help you light a scene. There is only so much you can do with the fixed-function pipeline, and you won't really learn the "essence" of graphics programming (IMHO). Most of these features are now deprecated, and you are forced to do it yourself through shaders or custom matrix math. If you wanted to learn this, you would read NeHe and other old tutorials.
The programmable pipeline
started with the introduction of shaders (GL 2.0). This means that things like fog, lighting, texture splatting, matrix math, and so forth are all handled with shaders and custom attributes. If you wanted to learn this, you would read ArcSynthesis and other modern tutorials.
As for version, it largely depends on your target audience. If you are doing a 2D game, you probably don't need
geometry shaders, transform feedback, instanced drawing, etc. More important would be a wider playability. Minecraft stats
give us a rough idea of casual gamers:
- 49% of users support GL 3 or greater
- 42% of users only support GL 2.x
- 9% of users only support GL 1.x
Personally, I would recommend learning the "programmable pipeline" -- but targeting GL 2.0. This also means that your code and shaders will be more compatible with OpenGL ES (iOS, WebGL, Android). You can generally read tutorials for 3.2+ and the concepts will transfer over well, but in some cases you may need to make some changes. Particularly, GLSL code will look slightly different in GL 2.0 than it will in GL 3.2+. All in all, it's not going to be an easy road...
All of my tutorials are compatible with GL 2.0 and OpenGL ES:https://github.com/mattdesl/lwjgl-basics/wiki
Here are some other modern tutorials that mostly focus on 3.2+ techniques:http://open.gl/http://www.arcsynthesis.org/gltut/
And the LWJGL wiki also includes some tutorials on shaders and the programmable pipeline.