2. In what way is bufgmux different from a normal 2-input MUX?
3. Why is a normal 2-input MUX a P.I.T.A in some cases?
Others have done a pretty good job of the other answers, but these two need a bit more explanation.
As others pointed out, a BUFGMUX is used to switch clock signals as they head onto the 'low skew' clock networks. These clock networks are specially set up so that the signal can reach all areas of the chip at exactly the same time (not by magic, but by ensuring that the delays along the way are equal).
A BUFGMUX differs from a normal MUX in that when you request that it switches between signals it waits until it has seen a falling edge on the currently selected input clock, and then while holding the output clock high it waits until the new input clock is high before it completes the switch over.
ASCIIart logic diagram....
SEL: _______________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLK0: __XXXXX____XXXXX____XXXXX____XXXXX____XXXXX____XXXXX_
CLK1: XXXXXXXXXXXX______________XXXXXXXXXXXX______________XX
OUT: __XXXXX____XXXXX____XXXXXXXXXXXXXXXXXX______________XX
A simple 2-input MUX would give you
OUT: __XXXXX____XXXXX____XXXXX_XXXXXXXXXXXX______________XX
This process ensures that during the transition there is no pulse with a width shorter than that of puise width in either input clock. If these short 'runt' pulses were to occur the synchronous nature of the logic running on off of the OUT clock would be broken.
However, that also shows you the problem with the scheme - you can't switch off of a clock that isn't ticking, and usually one from an external source. One solution I've used for this problem is that I add an XOR into the path of the unreliable clock, (e.g. PIN -> XOR -> BUFGMUX), and then if the design detects that the clock isn't ticking it can ask the BUFGMUX to switch, then waggle the input to the XOR gate to inject a couple of transitions, forcing the switch to occur. Very ugly, but it worked.
In this design, you can switch the high speed clock back off and on with the clock select switch, but if you use the single step button the design it won't start running again when you switch back. It is stuck on the 'stopped' clock. You have to push the button again to give edges to the BUFGMUX, allowing it to finish the switch.
It is a subtle but still interesting behavior.