[Android Apps and Games] n76:
In the local GSM backend if you are building a lacells database offline, then the options for building a database on the phone are unused and it does not matter what you set them to. When the backend detects a lacells.db.new file, it closes its current lacells.db (if any), renames the current lacells.db to lacells.db.bak, renames lacells.db.new to lacells.db and then opens the new lacells.db file and starts using it for providing location. (FWIW, the on phone database generation does basically the same thing you did off line just slower. It uses the operator settings to determine the data source and the country (or mcc) settings to determine which towers to keep out of all the data it scans. Then it builds a database file and when complete renames it lacells.db.new and puts it into the same directory you put your lacells.db.new file. The actual location processing code then does exactly the same thing with the UI provided lacells.db.new file as it did with your offline produced one.)

With respect to accuracy, many phones don't seem to support the calls for adjacent cells (older systems) or all cell data (newer phones) so the local GSM backend really has only the one tower you are connected to for determining location. So for many phones this will never be very accurate. It will get you into the town or part of city you are in but not much more.

The local WiFi backend should have about the same accuracy as the Mozilla or Apple backends once it has learned the area. The "once it has learned the area" is the big caveat. For myself, the local WiFi backend knows my local neighborhood so when I get in the car and ask OsmAnd or Maps.me for a route to someplace I have the current location instantly. And the current location is kept accurate as I move out of my neighborhood long enough for the GPS to acquire and start providing accurate data. While in route, the local WiFi backend is learning the WiFi hotspots along the way and, more importantly, near the destination. When I am ready to leave that destination, the local WiFi backend will have learned that area well enough to give me an instant fix that OsmAnd or Maps.me can use when computing the route to my next destination.

I wrote the two backends because I am cheap: I don't like paying for mobile plans with unlimited data. And even now that I've got a plan with data I usually have data disabled and rely on WiFi for Internet access. It is only when I am on a longer trip and won't be near a WiFi hotspot for several hours that I turn on data. Since I have data off the Mozilla and Apple backends are not useful for me. If you normally have data turned on, and don't mind the possibility that Mozilla and/or Apple might be gathering metadata on you, then you are probably better off using those backends. With respect to gathering metadata, you can look at the code for the Mozilla and Apple backends to see what is being sent to the server. In both cases it is very minimal and I personally would not worry about giving away too much metadata, especially if your mobile provider randomly changes your IP address from time to time.

The SatStat app has a map function where you can see both the GPS and the network based locations. By enabling one location backend at a time you can get a feeling for the relative accuracy of the Mozilla, Apple, local WiFi and local GSM backends. My experience is that it depends on where you are as to whether the Apple or the Mozilla backend is more accurate. The accuracy of the local WiFi backend is pretty much up to how much data it has collected.

With respect to battery usage: Neither the local GSM nor the local WiFi backends use any power unless you are running an app that is requesting location. It has been a while since I looked at the code for the other backends but I believe that they don't use any resources unless providing a location requested by some app. In my case, the apps that use location for longer than a quick fix (to get location for weather, etc.) are basically navigation apps and their use of GPS and having a powered on screen results in far more power use than the backends. I don't recall having ever seen a location backend show up in the battery stats and I don't have any power save feature enabled for them.