Stains and dyes allow us to change the color of plain old concrete. Each can be effective based on the concrete substrate and the look which you are trying to acheive.
Acid stains use hydrochloric acid to etch the surface and metallic salts react with calcium hydroxide in the concrete.
Stains react with the calcium hydroxide within the surface of the concrete creating a semi-tranparent look.
Dyes have a small particle size allowing them to change the color of the concrete by penetrating the pores within the surface.