If you are wondering, Why So Many Different Versions of Visual C++ Redistributables?
Visual C++ redistributables are components shipped by app developers who use Visual C++ to write their software.
By using Microsoft's well-tested and widely used code inside their apps, developers save their development cost by avoiding writing commonly-used code (e.g. sin and cos math functions and handling of common user interface elements like textbox or button).
Uninstalling one Visual C++ redistributable could save you a few megabytes of disk space, but you risk breaking some apps in doing so.
Because programmers rely on Microsoft to keep the Visual C++ runtime up to date. Microsoft releases the security updates for the redistributables, but due to developer demands, Visual C++ redistributables do not supersede each other and old versions are kept for compatibility.
Some apps are very specific about the version of the Visual C++ DLLs they require to make sure the app runs exactly as published. Their authors hold on updating to the latest runtime until they tested their app's compatibility with the new runtime.
It is one way to prevent a few thousands of calls from angry customers after Microsoft releases an update to the redistributable.
Most apps, however, bind to the latest edition of the same major version, as it is the default behavior and the benefit from immediate and effortless security updates outweighs risks in breaking changes delivered by redistributable updates.
Microsoft also has to support a lot of Visual C++ runtimes because it has no idea which one the app developer would choose. Multiple versions of Visual C++ redistributables can be required even within the same app, for example, if an app depending on Visual C++ 2008 redistributable uses a component depending on Visual C++ 2005 redistributable, the app's developer must ship both versions of Visual C++ redistributables.
On a 64 bit computer, the system could have both x86 and x64 editions of Visual C++ Redistributables installed since Visual C++ redistributable is a commonly used component. It 's okay to have both 32bit apps and 64-bit apps (or even apps that contain both 32-bit code and 64-bit code) installed on a 64-bit system.
You can probably find the app installing a redistributable by looking for an app with the same install date as the redistributable, but there is no telling how many other apps with a later install date are depending on the same redistributable.
The amount of time you spend on finding the exact dependency would most likely not worth the few megabytes you may save by uninstalling the redistributables.
In easier terms ->
Developers also target specific versions. A function in Release A is not guaranteed to work the same way in Release B. Of course, in reality, the basic will remain the same between the releases its the new features Feature C that exist in Release B and later and Feature C that exists only in Release C is the real problem developers face.
So they distribute the version they used and compile their software only to use that version. In this particular case, multiple date releases of the C++ Redistributables are possible of the same version. That's is why there are many versions of them.
To know more here's a reference: Source