Users with a reputation above a configurable value (it can be 0, meaning that everyone will be able to flag a post)
The flagged post author gets a reputation penalty for each flag, and at certain flag counts the penalty gets bigger. After a count decided by the administration, the post gets automatically deleted. All these values are configurable.
That depends on your policy, you decide how they should be used. When you click "report" you'll be given a number of pre-configured choices, or you can type your own reason. Once again, the administrators have the ability to change these pre-configured reasons.
Unfortunately there is no easy way yet for a moderator to remove a flag, the only person which can remove it is the person who issued the report. We're working on an advanced moderation and analysis module, but I'm not sure when it will be released or if it will ever see the day of light :)