I wrote a quick app that displays all sensors of an Android device. Mine is a Samsung Galaxy Note 9. With BODY_SENSORS permissions granted, I'm indeed able to read the heart rate (HeartRate sensor), for which you've got to wait for a while.
But, where's SpO2. I thought it was supported by that phone. Maybe, the sensor has a wierd name. Is it a true SpO2 sensor or some computed stuff with an algorithm from other sensor values?
Thanks in advance.
Edit: here's a screenshot of the app (don't expect something fancy, it's just a test app) with annotations:
I can only give you a definitive answer to your second question: Oxygen saturation is not an independent sensor, but is calculated from other sensor values (with additional software, e.g. Samsung Health). Quote from here:
On numerous Samsung phones, SpO2 can be measured using a series of sensors on the back of the phone in a method called pulse oximetry, which emits and absorbs a light wave through the blood vessels in your fingertip.
(see also this nice video).
Regarding the first question: I have installed the app sensors test on my Galaxy S9, which is simular to your Galaxy Note 9. It also only lists the heart rate sensor and not the SpO2 sensor. What counts as a sensor is up to Samsung. With Samsung Health v6.5x, the SpO2 value even disappeared for some years, probably because it was far too inaccurate, as you can read in the internet. I am therefore pretty sure that the SpO2 value cannot be read out in the same way as the other sensor values.