Your question seems to be in two parts:
- Are .NET Frameworks backward compatible?
- Can you install more than one .NET Framework at the same time on the same computer?
Yes you can install multiple versions of the ".NET Framework" at the same time without problems. Whether or not an app runs as expected is a different story as explained in the MSDN doco.
MSDN:
You can load multiple versions of the .NET Framework on a single computer at the same time. This means that you can install the .NET Framework without having uninstall previous versions Tell me more
...and
In general, you should not uninstall any versions of the .NET Framework that are installed on your computer. There are two reasons for this:
If an application that you use depends on a specific version of the .NET Framework, that application may break if that version is removed.
Some versions of the .NET Framework are in-place updates to earlier versions. For example, the .NET Framework 3.5 is an in-place update to version 2.0, and the .NET Framework 4.5.2 is an in-place update to versions 4, 4.5, and 4.5.1. Golly, tell me more
Backward Compatibility
Though newer versions of the framework are generally backward compatible (with respect to contracts) there may be unforseen behavioural changes visible at runtime.
As MSDN states:
The .NET Framework 4.5 and its point releases are backward-compatible with apps that were built with earlier versions of the .NET Framework. In other words, apps and components built with previous versions will work without modification on the .NET Framework 4.5
...however:
In practice, this compatibility can be broken by seemingly inconsequential changes in the .NET Framework and changes in programming techniques. For example, performance improvements in the .NET Framework 4 can expose a race condition that did not occur on earlier versions. More
So an app without appropriate config may be upscaled to use later versions of libraries leading to undesirable results. Sadly nothing can be done for a 4.0 app if .NET 4.5 is installed because the actual CLR was changed. More...
As Rick Strahl writes:
Note that this in-place replacement is very different from the side by side installs of .NET 2.0 and 3.0/3.5 which all ran on the 2.0 version of the CLR. The two 3.x versions were basically library enhancements on top of the core .NET 2.0 runtime. Both versions ran under the .NET 2.0 runtime which wasn’t changed (other than for security patches and bug fixes) for the whole 3.x cycle. The 4.5 update instead completely replaces the .NET 4.0 runtime and leaves the actual version number set at v4.0.30319. More...