For LiPo charging I have been using CN3065 breakouts. So far so good. I just need to make sure my panels don’t output too high a voltage when unloaded.
Missing from your schematic is a circuit to measure battery voltage, unless I missed it. As far as I’ve seen your options are a 100KOhm divider with a fet and 2nd I/O pin to turn it on/off or a 1M-4.7MOhm divider with a cap to allow stable readings. I use the latter successfully on STM32L0 boards (2x4.7M divider with 100nF cap).
In terms of low-voltage cut-off, I use the voltage divider and put the node into permanent sleep when it reaches 3.1v. Very little runtime left below that anyway. It takes some fiddling to get all the settings and I/O pins right to achieve the lowest consumption in sleep mode, so expect some experimentation and frustration! A single I/O pin in the wrong state can easily 10x your consumption when you’re in the single digit uA range. I would view any low-voltage cut-off in the regulator or charger as a second-level safety so wouldn’t worry about the exact voltage.
If you want the regulator with the lowest quiescent current, the TPS782 is down to 500nA. Only matters if you are really getting into single digit uA sleep. I would add a 4.7uF-10uF cap on the LDO output, btw, that radio takes a big drink when the TX turns on…
Something else I do on my low-power boards is to add a jumper on gnd where I want to measure current. This way I can add a shunt (uCurrent Gold in my case) to tune the sleep modes. I put it into gnd so the scope gnd, which you have to connect to one side of the shunt, is device gnd allowing me to hook probes to other pins to trigger the scope and show status/phases of the app.