Homing the 3D printer
It is possible to "home a printer" without having endstops, technically, you don't require endstops, but it makes your job a lot easier if you want to print something!

Basically, when you don't have endstops or limit switches, you need to define where the head of the printer is located. E.g. you can set the nozzle at [0, 0, 0] (origin in [x, y, z]) and add the command G92 to your print G-code file that it is at that position using G92 X0 Y0 Z0 (or any other location you use, e.g. you could engineer a parking position and refer to that position instead, note that you also need to write the movement commands to get out of that location safely). Don't forget to remove the homing command from your start code in your slicer, replace G28 with the G92 command with appropriate X, Y and Z values.

Regarding the inaccurate repetitive accuracy of your Z min endstop, it might be worth to find out why this is causing such a spread in triggering, maybe you need to invest in some new endstop switches or look more closely to the heated bed attachment to the frame.

Using Z max as a reference point is e.g. used by Ultimaker machines. The heated platform lowers to Z max; the printer knows from calibration and geometry how far it needs to rise to get to Z=0.