When I flag a question, I'm given a menu of possible reasons. Sometimes there are only three reasons (roughly "Spam", "Offensive" and "Needs Moderator Attention"). Other times there are more (e.g. "Very Low Quality"). What determines this?
Spam and Offensive are always available, they're like the fire alarm pull box on every floor of every building. They're treated specially, six of either automatically deletes a post and deals the author a 100 rep penalty. Both are given prominent positions in the moderator dash board so that they're seen very quickly and handled. These flags also help to feed our spam and troll filters, so take care to use them only when their literal meaning applies.
"Very low quality" is a somewhat ambiguous flag, as quality is always subjective. It's not available on positively scored posts and should only be used when you think something is so awful that it couldn't possibly be salvaged. As Jeff Atwood puts it, using that flag is like reporting toxic waste spilled on a busy street. If a moderator does anything other than delete the post or make a herculean edit, they should consider declining the flag.
"Other" is also always available, and is the only flag available on deleted posts. It's a direct hotline to the moderators to draw their attention to something specific. You can use this flag not only to point out specific problems about a post, but also specific behaviors that you think should be investigated.