In this section you need to remove the second value for the Z axis. The values are applied to the entire axis and not individual motors so you only need one value.
M208 X23.5 Y20 Z0 S1 ; set axis minimaHow did you determine these values for the minima? This says that when the endstop is triggered, the nozzle is still 20mm within the printable area. This doesn't seem right. This may explain why it's smashing into the left side. If the nozzle is actually 20mm off the bed surface, these minima values should be negative.
M208 X300 Y300 Z350 S0This says your bed size is 300x300 but your homing moves are only 250mm. Make sure that all of your homing moves are longer than the actual size of the axis to ensure they actually hit.
; home X G1 H1 X5 F1200 ; move slowly awayThat definitely should not be an H1 move. If you're trying to move the axis away from the endstop before it is homed, use H2.
G1 H1 X-10 F3000 ; move to X axis endstop once more (second pass) G1 X10 F1200 ; go back a few mmWhen using sensorless homing the second pass is not needed. Best to just remove it.
; Probe 2-point M401 ; Deploy probe - deployprobe.g G30 P0 X220 Y150 Z-9999 ; Front Right G30 P1 X0 Y150 Z-9999 ; Front Left M402 ; Retract Probe - retractprobe.gYou don't need to manually control the pin with M401 and M402. That's handled automatically.