The problem with using your inbox as a todo list is that anybody in the world can write to it. (citation needed.) The point of putting todo messages in a separate place is to separate the activities of doing stuff (ie, the items on your list) and deciding what needs to be done (processing your inbox and building your list).
When you're looking at starred messages, you know that a) you've already read the message, and b) there's an important task you need to do. Your job is to remember what you wanted to do and get it done. When you're in your inbox, you know that your seeing new information and your job is to decide whether or not its important.
This distinction may sound trivial, but it makes a huge difference. Think of it this way: When you read a message and then mark it as "unread," you're throwing away all the work you've already done in reading and evaluating it. Next time you encounter the message you're starting from scratch. By starring it and taking it out of your inbox, you give yourself enough of a cue to quickly resume processing the message where you left off.
But you can star something without moving it out of your inbox. It then moves up into a separate list at the top; the delineation is very clear, and I don't have to bounce between different screens.
Things you don't want to see again should absolutely be archived. But if you're using the Gmail web interface, you don't have to slavishly adhere to a literal interpretation of "inbox zero".
It's not about the label "inbox zero". In fact, I rarely have an empty inbox. Usually there's a handful of unread messages and maybe a couple that are read, but I haven't decided whether they need action.
What is important is limiting the distraction caused by new mail. If you're working through your todo items and new messages are getting added to the list, they'll distract you even if you don't read them. Of course, you probably will read them, which is even more of a distraction.
By keeping todo items on a separate list, you can keep your attention on your work, rather than on new messages. Then you process the inbox only when you choose to direct your attention to it.
When you're looking at starred messages, you know that a) you've already read the message, and b) there's an important task you need to do. Your job is to remember what you wanted to do and get it done. When you're in your inbox, you know that your seeing new information and your job is to decide whether or not its important.
This distinction may sound trivial, but it makes a huge difference. Think of it this way: When you read a message and then mark it as "unread," you're throwing away all the work you've already done in reading and evaluating it. Next time you encounter the message you're starting from scratch. By starring it and taking it out of your inbox, you give yourself enough of a cue to quickly resume processing the message where you left off.