Base prefix notation

0b is native to the compiler, much like 0x for hex, but it tends to be compiler specific whether that notation is actually supported and I don't believe it is part of the official c standard (gcc I believe does support it, which is the basis for many compilers). All of the Bnnn values are actually defined in a header file (binary.h in your Arduino core library folder). I imagine these were included for maximum compatibility between compilers (or maybe compatibility between programmers). It doesn't really matter which you use, as long as you have a compatible compiler or the right includes.
In terms of octal, C has a pretty stupid/confusing notation:

int x=035; <-- x is decimal 29!!!

It's particularly annoying as if you use 0's to try and align your numbers you get a nasty surprise e.g:

int c1=134;
int c2=120;
int c3=076; <--- This is troublesome
int c4=098; <--- Ahhhh!!!!!! (actually throws a compiler error!)
int c5=111;

EDIT: LOL, took a bit long typing that out :stuck_out_tongue: