title - remove. Titles should be set by node modules (and stored where the body and teaser are), not stored in the node table.
This was a design decision. We often only need the title of a node (for link lists for example). If we do a join on the node_revisions table, we lose a lot of time. We are contemplating to add the author's name for the same reason (save join on user table).
There is a difference here. In the case of user name it is redundant information denomralized for the sake of performance. For title, it reflects the current one used, so it is not redundancy per se.
I'd be in favour of a more flexible bitfield instead of all the single fields.
-1 More complexity in the code, plus hardcodes special meanings which we have today. It does not save much storage since we are talking of an additional int per row. Moreover, it would be hard or complex to select on a bit in the field, which is not a good database practice.