Background app refresh doesn't allow apps to run willy-nilly.
The OS decides when to let the apps run in the background. It analyzes your usage of each app and adjusts accordingly. For example, if you usually check Facebook on your lunch hour, the system will let Facebook retrieve data in the background run before lunch each day.
The OS is actually quite stingy about background refreshes. As an app developer, you're not even allowed to say when you want background refreshes to happen. You can only specify the interval between refreshes. And if you can't be cute and say "10 seconds between refreshes", because that is less than the system minimum interval (which isn't specified because it depends on your usage and how often the phone is awake).
So you can leave background refresh on. It won't cause battery drain.
Now, apps that use location services while in the background are an entirely different story.
If you're interested in more detail, Double Encore has a nice summary here: http://www.doubleencore.com/2013/09/ios-7-background-fetch/
The OS decides when to let the apps run in the background. It analyzes your usage of each app and adjusts accordingly. For example, if you usually check Facebook on your lunch hour, the system will let Facebook retrieve data in the background run before lunch each day.
The OS is actually quite stingy about background refreshes. As an app developer, you're not even allowed to say when you want background refreshes to happen. You can only specify the interval between refreshes. And if you can't be cute and say "10 seconds between refreshes", because that is less than the system minimum interval (which isn't specified because it depends on your usage and how often the phone is awake).
So you can leave background refresh on. It won't cause battery drain.
Now, apps that use location services while in the background are an entirely different story.
If you're interested in more detail, Double Encore has a nice summary here: http://www.doubleencore.com/2013/09/ios-7-background-fetch/