Best coding practice.

That's not arduino, that's avr-libc.

bool, true, and false are all part of C++, but not part of C, [citation needed] but gcc has extensions to get them to work in C also. It really doesn't matter how it's done in the internal gcc libs, since they're so well integrated with the compiler itself. It's just that you said the arduino files defined them, which is not true.

boolean is completely different and I don't see why anyone would ever use it.