Code generation from Mathematica involves converting programs written in the Mathematica language into other languages and then supporting them so that they can be executed. The Mathematica compiler provides a system for code generation into the C language.
One mode of use is to create C code that conforms to a Wolfram Library; this can be compiled with a C compiler and linked back into Mathematica. This is how the CompilationTarget option of Compile works when it is set to "C"; it is described in more detail in the tutorial on CompilationTarget.
An alternative is to generate C code that can be used outside of Mathematica. Since this will execute outside of Mathematica, any external calls from the compiler cannot be supported. This means that high-level Mathematica functions such as Integrate or NDSolve, which really do need Mathematica, are not supported. On the other hand, if your code is based on the set of Mathematica that can be processed by the compiler, this can work outside of Mathematica. This is done by a runtime library that is provided to give support to the C code.