Are there huge differences in OpenGL 3.x vs 2.x? Is it waste of time learning OpenGL 2.x or are they both following the same concept? I think i read somewhere that 2.x was state based and that 3.x was not, is that correct?
Learn whatever has the most learning materials written about it. NeHe's tutorials are a good place to start.
I did a little OpenGL work a few months ago, and while I don't remember the version I was programming to, I can tell you that it's the concepts that are the most important. This is especially true when you're just beginning and not dealing with shaders and whatnot.
They're almost entirely backwards compatible, so anything you learn with an older version is going to apply to the later versions just fine. If you have to 'aim' somewhere in particular, 2.0 is probably a good choice. If you look at the OpenGL Wikipedia page, you can see what was added to the various versions, and decide for yourself which features you think you'll need.
Be careful. OpenGL 3 deprecates a lot of functions, especially those of the early days of OpenGL. If you start with outdated tutorials (like most of NeHe), you will most probably become accustomed an outdated style of OpenGL 2.
There is no fixed function pipeline in OpenGL 3 (if you don't use the backward compatibility features). You have to use shaders. There is no glBegin/glEnd anymore. You have to use vertex buffers. Both are already available in OpenGL 2, but most tutorials start with glBegin/glEnd and setting OpenGL color properties. This is a very important difference.
OpenGL 2 provides countless ways to put something on the screen, each of which is covered in at least one popular tutorial. OpenGL 3 drops many of them, including the "beginners' subset" of OpenGL 2 (fixed function glBegin/glEnd). So if you want to target OpenGL 3 in the long term, go for it right from the start. There's nothing more demotivating than being stuck in a dead end.