Using the great UninstallView utility, I found the following installs on my machine:
So, can I remove some of them and which ones?
Thanks a lot!
Bob answered this in the comments, and then said someone might as well make it an answer, so here I am.
Visual C++ Redistributables are generally not safe to remove, since programs will depend on specific versions of them. Removing one will likely break something.
.NET Framework 2.0, 3.0 and 3.5 are all compatible. i.e. 2.0 assemblies will run on 3.0 and 3.5. .NET Framework 4.0, 4.5, 4.6 and 4.7 are all compatible (but not with pre-4.0). In this particular case, removing the targeting packs will mean Visual Studio will not offer intellisense documentation when compiling for that version. But it's probably not worth removing; they're pretty small.
Java should auto-cleanup old JRE versions, and generally you only need the latest version. However, some programs will save a path to a specific version on install so you might need to adjust configs
If you're not developing for .NET and are only a user, you don't need the SDKs and targeting packs. The older JREs are safe to remove in most cases. But if you're not desperate for disk space then leaving them is the safest option, yes.
Don't. Benefits are minimal, potential for issues is huge.
In theory you should be able to remove a number of the older versions of software run-times like VC++, Java and .NET.
But in practice there are 2 major issues with that: