All of those things are implemented in modern Android. Well, almost.
- Whenever the app wants to use microphone an OS popup asks you if you want to give the app permission to use the feature. The options are "when using app", "only this time" (it will give the app one-time-use access to the mic) and "never". If you click the 1st or 3rd options, you wouldn't see the popup again and you'll have to change the permission from settings. If you choose the 2nd option, you can manually choose to give permission each time it's requested.
- This is impossible? The OS can either let the app use the mic or not, it can't tell what the app is doing with the mic. Unless you mean give a one-time permission this time, but not in the future, then we covered that in previous point.
- Android always shows a green indicator on screen (upper right corner) when any app is using the microphone or camera API. Well, almost always, some system apps might not trigger it. But if you want to see which app is using mic/camera you can tap the indicator.
When I said "well almost" I meant the impossible case in the second point. Otherwise, everything is implemented as a I listed. What kind of Android do you use that you haven't seen these features? This granular permission system has been the standard since Android 11.
In iOS it's implemented in a very similar manner, but I don't use it as often to describe it in as much detail as with Android.
That is also implemented, but is a separate API, storage access. You're free to upload any file you like if the app requests it. You can create the file with any voice recorder of your choosing. Although I can't imagine a scenario where Facebook would request a voice clip. When it's requesting the mic it's usually for live audio, like calls.
It's true, if you gave the app permission to use mic whenever the app is running, it can in theory quietly use mic in the background. If you start a call and lock the screen, the call will continue in the background. Not sure if there are any safety measures implemented for that. But if the case was of a routine sneaky mic spying, it will become obvious fast, due to battery drain and network usage.
There are some network controls, like restricting background data usage (depending on Android version/implementation). But yes, there's still no granular network permission system, you have to manually go into setting to turn on restrictions. Thought to fair, there isn't a consumer OS out there that lets you easily restrict network access to a certain app, even on desktop (correct me if I'm wrong). And I can see why, it would be counterproductive for vast majority of users to manually give network access to each app they install, when the whole point if the device is to have apps that have network access.