For what it’s worth, the blinking red LED while charging means that the charging controller did its job and paused charging due to high battery temperature (I don’t remember the exact threshold but IIRC it was slightly above 40°C). There’s no need to unplug it in such condition since the charging is already stopped and the phone stays powered from USB, so the battery stays mostly unused (at least unless there’s a power peak that can’t be handled by USB alone). After unplugging you start to draw power from the battery back.
The CPU is set to start thermal throttling at 50°C - first by limiting the frequency to 1.0GHz, and then starting at 60°C by idle injection. Additionally, the GPU gets throttled at 65°C as well. The critical temperature at which the SoC is forcibly shut down is 90°C (I have hit that in the past on devkit and some early batches when compiling some big stuff, but so far never on Dogwood or Evergreen). These values are set in the device tree: https://source.puri.sm/Librem5/linux-next/-/blob/pureos/byzantium/arch/arm64/boot/dts/freescale/imx8mq.dtsi#L246
Since the CPU throttling temperature is higher than maximum charging temperature, it’s perfectly normal for blinking LED to happen when the SoC is under prolonged load - inevitably some of that heat will start to reach the battery at some point (and charging will make it heat up on its own as well, so it will happen faster while charging). Usually it’s enough to just stop the CPU activity and lock the screen for it to resume charging after a short moment - of course that depends on external conditions since the heat has to escape somewhere, so don’t wrap you phone with warm blankets in such condition