It has all to do with backwards compatibility. On a a "minor release" or "point release" (5.1 -> 5.2), you're not supposed to break backwards compatibility by removing any functionality or changing the behavior of things. This is normally a good thing as most software has many point releases over the months and years and we don't want to constantly waste time fixing newly-broken things. Regardless, quite often things are deprecated (retired but still functional) in favor of something better.
But at some point, all of those things changes, improvements, and deprecations need to be replaced by the something better. And that's when you do a "major release".
In a "major release" - which normally happen only every few years - you're allowed to break backwards compatibility. You're allowed to kill off all those deprecated functions, and you can still add new functionality. Of course, you can't surprise people with all these changes, so you have to announce them far in advance with samples, new howtos, and new documentation. It's not an easy task, but it has to be done at some point.
Is this an opportunity for new books, training, and updating applications? Yes... but so is updating desktop apps from Windows 95 to Windows XP or OS X's Panther to Tiger to Leopard.
Useful reading: http://en.wikipedia.org/wiki/Software_versioning#Change_significance