I have always wondered this. C++ code is fully compiled into machine language and NOT interpreted or compiled into byte code. Or at least that is what I have always been taught so why do some big applications need to install the VC++ runtime?
Well, you have the C++ (or C) programming language itself, and then you have libraries which add functionality for the language. C++ itself doesn't know or care what kind of system it's running on, so the language itself doesn't do anything that might be specific to one platform. Instead it defines libraries to do various things (say, printing text to the screen, or holding certain kinds of data), and while those libraries have the same interface, they are implemented differently depending on the platform where the code is running.
So at some point, the program needs access to the code that implements the library functions. This can be done by static linking (basically, when the program is compiled the library code is copied into the .exe file) or by dynamic linking (when the program runs, it tries to load the code from a .dll file). There are a variety of potential issues with static linking, so MS recommends (and most people use) dynamic linking on Windows.
Edit: To actually answer your original question about why they're always installed by programs... The original theory was that your programs would always automatically use the newest version of a DLL, but the problem is that it's very easy for updates to a DLL to change things and break backwards compatibility. So program 1 might be installed with version 0.1 of foo.dll, but then program 2 is installed with version 0.25 of foo.dll. Now program 1 crashes every time it tries to run, because it doesn't understand the new version of foo.dll. This was known as
DLL Hell. Ultimately MS made it possible to have multiple versions of the same library installed. So now, your computer would have both version 0.1 and 0.25 of foo.dll, and each program just uses the appropriate version that it was compiled against.