According to molecular orbital theory s and p orbitals can mix if they are close enough in energy to each other. For period 2 diatomics, this occurs for $\ce{Li}$, $\ce{Be}$, $\ce{B}$, $\ce{C}$ and $\ce{N}$ - in the case of oxygen and fluorine the s and p orbitals are two far apart in energy. The effect can be seen by realizing that s-p mixing causes the $2\sigma_\mathrm{g}$ orbital to be higher in energy than the $1\pi_\mathrm{u}$ orbital.
My question is: Does the mixing of the s and p orbitals occur between the orbitals of one atom (basically hybridization right?) or does the s orbital of one atom mix with the p orbital of the other (and vice versa)?
This has confused me because I realize that concept of hybridization is widely used and functions well so I initially believed that the mixing should occur in one atom - forming hybrid atomic orbitals - and then bonding. However, after I thought about it some more I began to doubt that this is the case. Firstly, the s and p orbitals on one atom do not have the correct symmetry to mix effectively (the s orbital would simultaneously constructively interference with one lobe of the p orbital and destructively interfere with the other). Also, the molecular orbital diagram of carbon monoxide reveals that s-p mixing must be occurring since the $3\sigma$ orbital is higher in energy than the $1\pi$ orbital.
This also seems to contradict the idea that the s and p orbitals mix on the same atom because in $\ce{O_2}$ there is no s-p mixing so why would oxygen mix its s and p orbitals when it's bonding with carbon.