Davon abgesehen wird die 2.0 und 3.0 ebenfalls installiert, wenn man die 3.5 installiert - MS wird das sicher nicht zum Spaß gemacht haben.
.NET 3, 3.5 sind:
.NET 2.0 Runtime + jeweils eigene, neue *zusätzliche* Assemblies.
.NET 4.0 bringt wiederum eine eigene Runtime mit, die durch .NET 4.5 wieder ergänzt wird (und einige kleine Teile der Runtime werden dabei ersetzt).
Das machen die freilich nicht zum Spass, sondern das ist eine einfache Notwendigkeit.
Das 'Rückwärtskompatibel' betrifft primär die Compiler. Das heisst der Compiler der mit 3 und mit 3.5 mit kommt, produziert Kompilate die problemlos auf dem 2.0er Framework laufen. Der Compiler im 4.5er analog dazu Kompilate für 4.0.
Wenn das Programm nun Assemblies aus den höheren Framework-Versionen verwendet, dann hat es zwei Möglichkeiten:
a) es läuft nicht auf kleineren Versionen,
b) es liefert alle Abhängigkeiten extra nochmal mit und braucht damit lediglich die nächstkleinere Version mit eigener Runtime (also 4 für 4.5 und 2 für 3 und 3.5).