C++11

the first thing I need to understand is classes, overloading etc

Which should be common to all versions of C++.

Arduino is not even C99, only C98?

You have to explicitly enable C99. The Arduino IDE doesn't.

Does anyone know the particular reason they're sticking to a compiler version over 5 years old rather than the released, stable and fully C++11 compatible 4.8 compiler?

It's been discussed pretty extensively in other threads. Basically, there isn't much proof that the newer compiler is "stable", or that it is fully X+11 compatible for AVR (don't forget, there's no C++ library, so anything that's dependent on runtime functions won't work.) Especially since Atmel is only distributing 4.7. And since 4.4, 4.5, and 4.6 had known catastrophic bugs in the Arduino environment.
Arduino users probably account for 80% or more of the avr-g++ usage; it doesn't get a lot of other exercise or testing.