Chemistry - Why is CO practically nonpolar?
Solution 1:
Preliminaries: I am using the wrong (but still common) notation of the dipole moment. Please see the question about the direction of the dipole moment.
The reason why carbon monoxide is often referred to a being practically nonpolar is because of its very small dipole moment. \begin{align} \ce{{}^{\ominus}\!:C#O:^{\oplus}} && \text{Dipole:}~|\mathbf{q}|=0.11~\mathrm{D} && \text{Direction:}~\longleftarrow\hspace{-1ex}+ \end{align}
Unfortunately the explanation of the bonding in carbon monoxide is far from simple, and it is perfectly understandable that you are confused. The dipole moment can be very well explained with molecular orbital theory, which I have already written about.
I will include a brief explanation at this point as I saw that the explanation on Wikipedia is from my point of view incomplete (not to say wrong).
Let's first state the obvious: Oxygen is more electro-negative than carbon. Therefore one can expect that all bonding orbitals are polarised towards the oxygen. That is of course only true when we are staying in the Lewis bonding picture. Based on this one would expect that the lone pairs cancel each other and since all orbitals of the triple bond are polarised to the oxygen, the dipole moment should also point in that direction.
This is obviously wrong, since the experiment tells us something different. There are ten valence electron in this molecule. They all occupy orbitals with bonding character, i.e. there is no nodal plane perpendicular to the bonding axis between the elements. The low lying orbitals are all polarised towards oxygen, because of electronegativity. The HOMO on the other hand is strongly polarised towards the carbon and is very large. In addition the nuclei contribute a dipole moment because of their asymmetry of charge. With less positive charge on the carbon nucleus than on the oxygen nucleus, the dipole component of the nuclear charge contribution also has its negative end on carbon. The combination of HOMO and nuclear dipoles in the reverse direction is larger than the combination of all the other occupied orbitals.
It is important to understand that it is often not possible to know about the properties of a compound simply by looking at a structure on paper. Very often the simple models we love and use break down easily for small molecules. A bonding situation has to be explained as is and not in terms of what would have been when we look at individual atoms and how does it change.
Solution 2:
Well, it's just like you said: $\sigma$ electrons drift from C to O, because O is more electronegative, and $\pi$ electrons drift in the opposite direction, because... Look at it this way: C and O are both sp, each with a lone pair facing away from the other atom. They form a $\sigma$ bond and a $\pi$ bond, too. Now they want to form another $\pi$ bond, but C got no more electrons to use, so O has to throw in two of his own. That's the drift we are talking about.
As it happens, the two effects almost negate each other. The resulting dipole moment is so insignificant, I don't even remember which way it is.