Not easy, but doable! I had outlined some of the tricks I gathered over time here: https://hackaday.io/page/10792-assembling-densely-populated-pcbs-with-0201-components
This project actually isn't as bad as the board I had shown on that page, but still - proper tools are absolutely required for such a build. Like a stereo microscope.
Paste applied manually:
I spared the GNSS and the little BGA. The BGA doesn't need paste and I wanted to do the GNSS with low temp paste after testing everything else.
After soldering everything on my stove top:
Now the BGA. Added some tacky flux to the PCB with a brush, placed BGA and added a small inductor on top for extra weight:
After that was done I could test the BGA / magnetometer. I could measure the clamping diodes on SCL and SDA, and proceeded to run a little arduino test to see if it was working. Fortunately, there's a library with an example sketch for the MMC34160PJ so that was easy.
Next: ZOE-M8Q. I placed some paste on the PCB frame and picked it up with my soldering iron with a fine tip to pre-tin all pads. Then clean, add flux and level with hot air plus a few touch ups here and there for this result:
Clean again, add tacky flux, place GNSS and reflow at 220° C:
With a molex flex patch antenna we're at 1.1 g:
The GNSS worked as well and gives a cold-start fix with half of the sky in view after 34 seconds. Tested with https://pypi.org/project/PyGPSClient/.