I'm not sure it is an easy question though. There doesn't seem to be a specific permission to use data in the background, so any app that can access the Internet and can run in the background can access background data.
You can restrict access through the system settings (app by app on my phone), at least for mobile data, but producing a list of all apps that could potentially access data in the background would not be very different from producing a list of all of your apps.
As for which need background data access, that's even harder. For example, as far as I'm concerned Facebook doesn't need background data access: nothing posted there is so important that it can't wait until I check it myself. Of course Facebook themselves, and some of its users, would disagree. So any answer to this from a search would be a matter of opinion rather than fact. But my simple rule would be that unless you need an app to notify you of events or update its information without you opening it
/telling it to (e.g. if you have a weather widget you probably don't want to have to press a refresh button before looking at it) then it doesn't need background data, whatever the developer would say.