This question again! Don't worry about it, this confuses a lot of people. The issue is that cumulative can have two very subtly different meanings, and most people don't realise that it can, and so become confused. Allow me to explain.
Firstly, the answer. No, you cannot uninstall them without loss of functionality. If you want to stop reading here, then fine.
A developer writes a program which uses C# and .net Framework, as an example. He compiles it so that it uses .net Framework 3.5 Client Profile. Sadly, he wasn't a very good developer, and didn't include proper error handling. I know this sounds a bit technical. This bit can be ignored if you don't understand it. The program runs, and looks for .net 3.5. If it doesn't find it, then it crashes. Program dead. Very dead.
Another programmer writes a program for .net 2.0. Again, if .net 2.0 doesn't exist on the system, then it crashes.
The .net 3.5 program cannot run on .net 2.0, and the .net Framework 2.0 program cannot run on .net 3.5. Both need to be installed on your system side by side for good functionality of both programs.
So far, it appears that Cumulative is a word unknown to Microsoft. After all, if it is cumulative, why can't the .net 2.0 program run on .net 3.5?
For this, please navigate to C:\Windows\Microsoft.net\Framework\. Look in the folders of each version currently on your system. 2.0 has a lot of files in it. A massive number. Almost every file from 1.0 or 1.1 has been updated in version 2.0. If you target 2.0 in a program, you get mostly 2.0 assemblies. Now look in 3.0. How few files there are! Most of the time while targeting 3.0, you get 2.0 assemblies, except for very occasionally. Cumulative
. Now look at 3.5. A lot are updated again. Much less likely to get 2.0 stuff now. 4.0 - a lot of new stuff. Most stuff has now been replaced since 2.0. This is what it means by cumulative.
I am willing to be corrected on any of this, and this final statement, but I am pretty sure I am right. A Service Pack will overwrite an original version quite happily. Therefore, to run every program, I think that you only need:
1 and 1.1 have passed. You can basically live without them now. Don't try to remove 3.5 pre-SP1. I think it has just been updated to SP1, and trying to remove it wouldn't be clever. More and more programs are using 4.0. It is a very nice library for a developer. I would recommend leaving everything alone, except for installing 4.0.