The table is intended for use by plugins to store their own extra data for questions. Plugins can't change the structure of core tables like qa_posts.
In theory that could have been added to the qa_posts table, but I think Gideon did it like that to allow the potential of more fields in future.
The main advantage of doing it this way is that there does not always have to be a row in qa_postmetas for every post. For example with the "extra field for questions" it only stores a value if the post is a question. Plugins may also only store values for certain post types.
Your second bullet point is incorrect - I answered your other question.
Your last point could be a bug. If the extra field is empty, it doesn't really make sense to store a row for it. And it should be deleted if the question is deleted. (Though I haven't checked if it's deleted when the cleanup operations are run in Admin > Stats.)
Edit: just tested this and rows in qa_postmetas ARE deleted when the question is deleted. Were you perhaps just hiding the questions and not deleting them? Let me know if you find a way to reproduce this bug.