How to allow content tagging by anonymous users?
You could use the Flag module, and allow it to be used by anonymous users also, as described in my answer to "How to display a flag to anonymous users?". Create a flag for each tag you want to allow for anonymous tagging, and assume you label such flag like "Tag with TagABC".

Use the Rules module to create 2 Rules Components:


a 1st Rules Component (say "Approve Tag suggestions") that performs 2 Rules Actions, and looks like so:


apply the tag TagABC
unflag it again (to remove the flag "Tag with TabABC").

a 2nd (similar) Rules Component (say "Reject Tag suggestions") to only unflag (=remove the flag "Tag with TabABC") anything that is considered as "rejected".


Use the Views Bulk Operations (VBO) module (which depends on the Views of course) to create a VBO list of anything flagged like "Tag with TagABC", and use this during your review process to mark (select) anything that was flagged and that should be considered as "approved" (similar approach later on for anything to be considered as "rejected"). The actual "operation" to be performed (by VBO) is to execute either of both Rules Components described above. For more details on how you can use VBO and Rules together, refer to my answer to "How Do i implement an alternative for the Privatemsg Bulkmail module?".

4 commonly used modules (which can be used for plenty of other use case), and some relatively easy site configuration to be performed. That's it.

Limitation: what is above does NOT support FREE tagging (= invent your own new tags) for anonymous users (which may lead to tons of tags, used only once). Maybe a compromise could be to have a link to "suggest your own tag", via some form shown on a block? Other idea (never tried): flags are fieldable, so add a select list field to an extra flag (say: "pick your flag"), and use the "Select (or other)" module to allow such additional tag to be suggested.