Just to point out the technical aspects, Flags have been implemented in Flarum as a general-purpose way to mark discussions for review.
Approval actually does 2 things, it marks content as requiring approval, and then flags the content. You can actually dismiss the flag on unapproved content without approving it. You could also approve it without removing the flag (only via the REST API).
We currently don't have any good way of filtering which flags are visible to which users since flags are just that general-purpose concept. Flags have a type though (currently only used to change the labels and look), so it would technically be possible to configure permissions/visibility for each type separately. This would make the Flags extension more complex though and since it was meant as a simple way to centralize content awaiting moderation I'm not sure this is something we actually want in core (?)
The flag count is always loaded dynamically so extending the visibility scope of flags would automatically fix the count label as well.
Having per-type flag visibility scoping could be a good idea for a community extension. The most complicated part is probably to build a good admin configuration UI, not even the visibility scoping part.