In terms of simplification this is the worst of all worlds for an implementor, and it extends the pain indefinitely. It tries to be developer centric but in an unhealthy way that just never cleans up the landscape.
Chosing between a clean new API and an old one based on a context creation is nice and simple. The right way to do this is to say "See OpenGL 2.x spec". To offer a matrix of options that overlaps is fugly and makes the support burden for implementors even higher. But the most worrying thing here is you just rattled off 3.1 & 3.2 revs without any suggestion that this really needs to get sanitized as part of a clean break. Leaving deprecation up to vendors in a knife fight turns deprecation into a game of chicken. It's so obviously flawed I guess you have to be in the middle of it to miss the boat anchor fetish.
I can see the motivation here but having an excuse is not the same as having a sound justification, the future cannot be about serving the needs of the slowest moving elements of the developer community and pissing off the rest. Dinosaurs who can't port their apps do not deserve the right to hold back the future. They can be serviced with OpenGL 2, accomodating that model in OpenGL 3 as a bridge to the future, well, what does it really accomplish? Help them feel better about riding the short bus?
If you wanted to provide this you could have given them semi-supported developer drivers for their port (not for general release, EVER), it didn't need to go in the spec and be rolled out on everyone's machine.