Difference:
https://developer.android.com/training/location/permissions#accuracy
https://developer.android.com/training/location/permissions#approximate-request
You need to ask for both permissions.
Approximate
Provides an estimate of the device's location, to within about 1 mile (1.6 km). Your app uses this level of location accuracy when you
declare the ACCESS_COARSE_LOCATION permission but not the
ACCESS_FINE_LOCATION permission. Precise
Provides an estimate of the device's location that is as accurate as possible, usually within about 160 feet (50 meters) and sometimes
as accurate as within 10 feet (a few meters) or better. Your app uses
this level of location accuracy when you declare the
ACCESS_FINE_LOCATION permission.
If the user grants the approximate location permission, your app only
has access to approximate location, regardless of which location
permissions your app declares.
Your app should still work when the user grants only approximate
location access. If a feature in your app absolutely requires access
to precise location using the ACCESS_FINE_LOCATION permission, you can
ask the user to allow your app to access precise location. ``
Then in Android 12 permission changes
On Android 12 (API level 31) or higher, users can request that your
app retrieve only approximate location information, even when your app
requests the ACCESS_FINE_LOCATION runtime permission.
To handle this potential user behavior, don't request the
ACCESS_FINE_LOCATION permission by itself. Instead, request both the
ACCESS_FINE_LOCATION permission and the ACCESS_COARSE_LOCATION
permission in a single runtime request. If you try to request only
ACCESS_FINE_LOCATION, the system ignores the request on some releases
of Android 12.