The short answer is that they're needed. The longer story is:
Programs/DLLs can change between the runtime environments like of C++ 2005, 2008, etc. Say you have DLL "A". In 2005, DLL "A", might do "X", but in 2008, DLL "A" might to "Y". It is also possible that parameter "A" in 2005 is a string, but in 2008 it is an integer. All of this can affect how the programs that use the runtime environments will, or will not run. A DLL can be replaced completely between runtime environments. DLL "A" in 2005 may not be the same DLL "A" in 2008. There's much more, but I think you'll get the idea. This is why they're in different folders.
Have a good day.
Edited by scotty_ncc1701, 08 June 2014 - 06:48 AM.