For the most part, "traditional" colorants like those seen in fireworks are used. Barium for green, Strontium for red, etc. Typically, the temperature of the flame needs to lowered so that the color does not get washed out and appear white. This typically results in a loss of efficiency which may or may not be tolerable depending on the application.
Faster propellants like "blue thunder" have a small percentage of copper oxide to increase the burn rate, and the copper also produces the blue color.
The color reactions are the result of the excitation/relaxation processes occuring with the electrons on the metal atoms. An electron becomes energized and occupies a higher energy level, then, upon returning to its ground state, emits a photon of a discrete wavelength which we see as a color. I don't know offhand what the actual reactions are (they usually involve chlorine), but Terry McCreary wrote an article on the process in Extreme Rocketry awhile back.