How to implement an UART communication protocol
Seems good, just make sure you check for a fully filled buffer (means you will lose bytes). Or have to prevent sending more.
This depends how much is the difference between receiving and handling them. If there can be some difference, you need a bigger buffer. If you can make sure you process incoming bytes almost immediately, the buffer can be small.
It should be the maximum (or reasonable) size of data you want to store before you are able to process it. Or to prevent the sender to send more.
I don't have experience with this. 
Definitely the first, instead of having to send multiple bytes, you only send one byte, and you don't have to check for the end of a command, just every value (0x00, 0x01) is a single command. Only send texts through communication channels if you really need the text, otherwise decode it to a unique number. I would do the same for the return value, e.g. I am ready is 0x00, and I am busy ix 0x01.