boolean is a non-standard type alias for bool defined by Arduino. It’s recommended to instead use the standard type bool, which is identical.
In that case, I didn't feel that the benefits of the slightly more beginner friendly boolean outweighed the disadvantages of using a non-portable type alias. However, my feelings are different when it comes to byte.
Do you mean "include a lib" and "define a type"? You have to be careful with terminology or things get confusing really fast.
Type definitions don't generate any code, they are only instructions for the compiler to handle identifiers in a certain way. So including a library that provides some type definition certainly won't impact code generation. An optimizing compiler (like AVR-GCC and most others) does not compile unused code. That also applies to libraries.
Yes you are wrong. I told you already there is no difference. The inclusion with #include just pastes all the library text in front of the main program, before compilation. So by the time it sees some redefinition, it already knows the definition. Even so, it wouldn’t matter when it comes to code generation because all the machinations of the compiler, including identifiers and definitions, are thrown out the window at that time.
A definitive answer to your main question, “is byte a good choice” depends on what you are doing with the data.