I guess you’re confusing a few things here: microG is a FOSS rewrite of the GServices framework. Basically it gives the same “outer interfaces” (so apps depending on Google Services will think they have them available and use them fine), while internally handling things entirely FOSS.
Example: an app wants a map tile from Google Maps, so it calls the proper methods of (it thinks) Google Services – which is where microG receives them, and returns tiles from Open Streetmap instead. App is happy getting the tiles and using them.
Example: an app wants to “phone home” to Google Analytics. microG accepts the data, simply discards them, and reports success.
Example: an app wants the current location. microG retrieves it from one of its own backends (on my device e.g. the OpenCellId database – no network connection needed for “network location”, funny as that might sound). Similar for Nominatim (giving a location name like “5 Baker Street, Funny Town” and receiving the GPS data for it).
And so on. The only 2 exceptions are (currently): Using Firebase Cloud Messaging, testing SafetyNet. Both must be explicitly enabled by the user (I have them disabled on my devices). And even FCM will hopefully be replaced soon – alternatives are already available, e.g. Gotify or NoProvider2Push. And UnifiedPush as a wrapper on top – so apps supporting UnifiedPush basically leave the choice to the user which service to use.
On this I agree, to a degree. While Aurora Store uses Google Play as backend, it allows the user doing so with more privacy, stripping of quite a lot of Google tracking. So in a way, it is “de-googling” – at least partly. Just to clarify: no, I don’t use that either. The only “app store” installed on my devices is F-Droid. I don’t even have a Google account anymore – as Google thankfully closed that for me.
UnifiedNlp is part of microG Core. So the place where you see the 3 back-ends you’ve mentioned is UnifiedNlp There are several Location Provider available, including apps to help improving them (I eg. use Tower Collector to contribute to OpenCellId (which I use myself, see above) and Mozilla Location Services; as a side-effect the app can be used for route tracking, as you can export your locations in e.g. GPX format).
Correct. The Mozilla back-end uses MLS (online, so you need a network connection), GSM Location Service uses OpenCellId (also online), Nominatim uses OSM (again online). I’m using the LocalGsmNlpBackend on multiple devices; the database is created on my Linux machine and then pushed to all of them. So “create once, use many”