Clives explanations were very helpful, but I don't understand the difference between HOME_LATCH_VEL and HOME_SEARCH_VEL yet.
HOME_SEARCH_VEL is the speed at which you want to run to the home switch (which is generally slower than a G0 move) The search for home is at a reasonable speed and might overshoot slightly.
HOME_LATCH_VEL Is the speed Usually very slow to back off the home switch (this is the final trigger and accurate move) when this is done you use the HOME to move away from the latch so that it will not get false triggers (this can be 1mm to the other end of the table if you want.
Once this is all done and homed the soft-limits will work correctly.
As Rod has said you need a switch (sensor) at either side of the gantry to be able to square it with the HOME_OFFSET.