When programming you need a way to talk to the video card. One way of doing that is to use a set of small bits of code to do each feature you want. DirectX and OpenGL are specifications on what those small bits of code are and how they can be used. So each time I want to draw a dot on the screen I don't have to tell it a bunch of stuff like what the video card can do, what kind of card it is, instead I can tell it draw a dot at x,y and make it blue.
OpenGL has been around for over 10 years and there are a lot of applications that use it, that is both a blessing and a curse for the API. Games started out using it because it was one of the best known API for graphics at the time. That same open nature made it slow to change, there was no rush. MS had marketing and paid development to devote to development of DirectX.
With OpenGL making radical changes is hard to do without breaking a lot of older applications. With revision 3.0 they marked the things that would become deprecated in the future to give developers time to adjust to the future changes.
They are taking the approach of gradually changing the API vs doing an abrupt change, even though the latter would give people new features now at the cost of legacy applications. 3.1 has been released and gives people more of what they wanted with 3.0. 3.2 is due soon.
OpenGL 3.0 is compatible with version numbers less than 3.0 . 3.1 is not, requiring programs to not use features marked as deprecated in version 3.0.
It is very similar to how MS is doing the change between DX versions. If they made windows DX10/11 only there would be a huge outcry since there are still a lot of DX9 titles. Instead they are putting the information out about where things are headed and giving programmers time to adapt.