There are three biologically important kinds of heme. The most common type of heme is called heme b. Hemoglobin and myoglobin are examples of proteins that contain heme b. Heme b is not covalently bound to the apoprotein it is found in. The structure of heme b is given here:
Heme a differs from heme b in that a methyl side chain is oxidized into a formyl group, and one of the vinyl side chains has been replaced by an isoprenoid chain. Like heme b, heme a is not covalently bound to the apoprotein it is found in. An example of a heme containing protein that has heme a is cytochrome c oxidase. Heme c differs from heme b in that the two vinyl side chains are covalently bound to the protein itself. Examples of proteins that contain a c type heme are cytochrome c and the bc1 complex.
The names of cytochromes tend to (but not always) reflect the kinds of hemes they contain. Therefore, cytochrome a contains a a type heme, cytochrome c contains a c type heme, etc.