The electron coordination between the heme iron and CO is perpendicular to the heme plane (but this is slightly reduced when the heme is bound to hemoglobin) and is a very strong interaction while the coordination of O2 to the iron is not perpendicular to the heme plane and so is significantly weaker. Lehninger Principles of Biochemistry 5th Edition, page 158, Fig. 5-5 has good diagrams of the two different bond orientations.
I was also looking at the answer in Lehninger's but it was not excatly given. Above Martin says that the oxygen in CO loves the iron in hemoglobin, however, CO binds to the heme via the carbon atom, not the oxygen (in CO molecule both have a free electron pair in addition to the triple bond). For myoglobin, if I remember correctly, a structural reason is given why myoglobin binds CO more poorly (due to the different coordination and its interactions with the amino acids in the heme binding site). So, besides the difference in coordination to the heme plane, I would look at the protein structure of hemoglobin.
Thanks for answer, Gary, but I was not thinking about CO2 but CO in which the CO binds to iron via carbon to form a metal carbonyl (and in this case more exactly carboxyhemoglobin). Is this not correct?
The three dimensional structure of CO bound to myoglobin show its binding completely perpendicular to the heme plane and through the carbon. This is in contrast to the oxygen binding which is combed 120 degrees. One possible explanation is that molecular orbitals in CO are in opossition while in O2 are 120 degrees apart. Thus, if oxygen binds coordinatively to Fe the other oxygen will have a 120 degrees angle
Its due to the bonding between fe and CO. It has perpendicular bond between fe and CO. The first oxygen molecule has 90 degree bond but due to due to histidine, second oxygen get bind with 120 degree bond and hence less favoring. But as concentration of CO is very less in body, oxygen get loaded to heme even though affinity of CO is 25,000 times more than O2 for heme.