If statement - checking only the first 5 MSB's.

there is not supposed to be a zero before the B.

It depends. 0bXXXXX is a gcc extension for binary constants.
BXXXX are macros defined in one of the files included by the arduino IDE.
So 0bxx is more portable to other gcc uses (for instance, Atmel Studio), while Bxxxx is more portable to random other compilers (assuming you copy over the correct .h file...)

I'm inclined to believe that the shift is less efficient, since a 3bit shift is at least three instructions. But the compiler might be smart enough to generate similar code for the case where constants are involved...