I am unsure of the role the OCXO plays. I would think the GPS signal would enable creation of the 10 MHz without the need for a separate oscillator. I guess that isn't the case.
No, the GPS gives us a 1PPS (1Hz pulse) signal, which is used to precisely measure the frequency of the OCXO every second. It is the OCXO that gives us a stable 10MHz square wave signal.
So if the OCXO is locked within 10 ppb, how does that help get the unit within 1 ppb?
That's a very good question.
Let's assume we have assembled the STM32 GPSDO on a breadboard with a 5V square wave OCXO that was bought on AliExpress. These are used, recycled OCXOs that cost <$10. They have a frequency control pin that allows adjusting the frequency by around +/- 20Hz by varying the voltage applied to that pin between 0 and 4V. We call that voltage Vctl.
So roughly speaking the frequency of the OCXO can be varied around 10MHz by adjusting Vctl, with a slope of 10Hz per Volt, or 0.01Hz (1ppb) per millivolt.
Calibration means finding the Vctl(e) that sets the OCXO to 10MHz +/- some arbitrary error e. This Vctl(e) is unique to each and every OCXO, so it has to be determined experimentally.
What the auto-calibration procedure does is, in 30 seconds, it finds the correct value for Vctl that brings the OCXO within 0.2Hz (20ppb) of its nominal 10MHz frequency; we can call it Vctl(20ppb). At this stage the FLL (frequency locked loop) takes over and further fine-tunes Vctl to bring the OCXO within 0.01Hz (1ppb) or 0.001Hz (0.1ppb) (when used with the 16-bit PWM software DAC) of its nominal 10MHz frequency. This fine-tuning process can take up to 2 or more hours, but it would take much longer without the prior auto-calibration.