Most of these things can probably be done with Discourse.
No problem there.
Can be done. Click on the category’s admin wrench > Settings > Scroll down to the ‘Moderation’ section and tick the require moderator approval of all new topics
box.
Reviewers can edit the post in the review queue before approving it.
You can use the following plugins: