I'm not entirely sure what background app refresh even actually is: Does it mean that the app is constantly calling home and eating up my data allowance? Or does it just mean the phone is receiving the occasional micro-packet letting iOS know that there's information available next time I bring up the app?
I don't think I have any apps that I want using my data unless I'm actually using the app at the moment. E.g. a navigation app during actual use, a web browser or mail program while I'm actually using it. Etc. Otherwise, let it refresh when I call on it.
What am I missing here?
Generally speaking, all apps should be suspended in a few seconds after it is put into background. If they somehow run in background, it is usually initiated by the iOS to handle a few specific circumstances which the app has pre-registered for.
The two common background modes:
Background App Refresh (or the
fetch background mode) meant to grant apps an
opportunity (i.e. no guaranteed time interval) to refresh their data in the background. iOS would attempt to wake apps to prepare it before you might need it, based on its analysis of your use pattern. The execution time of the background refresh routine is limited to 30 seconds, and the probability of a next grant is subject to power usage, data usage and network integrity.
Silent Push Notification (or the
remote background mode) meant to grant apps an
opportunity (i.e. again not guaranteed) to refresh their state with regard to the push notification. The background refresh routine is also subject to the same set of limitations/caveats as Background App Refresh, and the only difference is the initiator being the app's push notification provider, not iOS.
Note that while it is called "silent", it is just a flag in the push notification packet, and can be attached to normal push notifications. For example, it can be used to preload - only if iOS grants the opportunity - the new mail in background at the time its notification is presented to you.
In reality, these two background modes are consistently triggered when your device is
on both charger and Wi-Fi. My observation from Dispatch and Due is a 10- to 15-minute interval for BAR, and a permanent green light for silent pushes. Otherwise, it would very likely be rapidly throttled to the "never wake again" category if it doesn't behave well.
Both modes share the same BAR switch in Settings, by the way.
Some other background modes IIRC:
VOIP - Since iOS 8, it is similar to Silent Push Notification, but is guaranteed to wake the app for the VoIP push notification.
Bluetooth - Don't worry, it is throttled for power efficiency.
Location - I haven't learnt much about this, but again I believe it is throttled.
Background Transfer - For long-running file transfer, e.g. uploading a video.
Audio - For audio playback.
TL;DR: iOS throttles everything for power efficiency, and generally speaking nothing can run extensively in the background other than seconds in two digits.