Machine space and machine coordinates are terms used for the range of motion on an axis that FluidNC uses internally. These coordinates do not change when you zero an axis or change work coordinate systems (G54-G59). Work coordinates are just offset from the machine coordinates. The only thing that resets machine coordinates is homing to limit switches.
If machine space is confusing you while using the machine, just ignore it. It is primarily used by the machine and not the user. Virtually all gcode operates in work coordinate systems. These are the coordinate systems you can zero on your work and are saved in non volatile memory.
With FluidNC you are free to setup the machine range any way you like. It can be any size and you can place that size anywhere you want in space. You can have it in all positive space, all negative space or partially in both.
Here is a good video explaining work coordinate systems (Uses Grbl, but is still valid for FluidNC)
The "travel range" is the per-axis extent of machine coordinates that the machine is permitted to travel if soft limits are enabled. If, for example, the X axis travel range is [-40.000, 160.000] and soft limits are enabled, then a GCode command that asks to move to a machine coordinate less than -40 or greater than 160 will cause an alarm.
$J jog commands are similarly limited but without alarming. If you issue a jog command that would travel outside the travel range, the requested distance is truncated so the jog ends at the end of the range corresponding to the jog direction.
These config file items affect the homing process and the travel range:
The machine will home in the negative direction and set the machine position to 0 afterwards. The startup messages will report this travel range:
[MSG:INFO: Axis X (0.000,300.000)]
The machine will home in the positive direction and set the machine position to 300 afterwards. The startup messages will report this travel range:
[MSG:INFO: Axis X (0.000,300.000)]
The machine will home in the negative direction and set the machine position to 150 afterwards. The startup messages will report this travel range:
[MSG:INFO: Axis X (150.000,450.000)]
The machine will home in the positive direction and set the positive-end machine position to 10 afterwards. The startup messages will report this travel range:
[MSG:INFO: Axis X (-290,10.000)]
If you do not use homing, machine space is moot. The machine does not know where it is at any time. Soft limits should not be used. Hard limits could be used, but if you have switches, you are likely to home. You can still zero the work coordinate system anywhere you want without switches. The machine space specified by max_travel and mpos_mm will be ignored and you can freely travel past the ends. Any zero you set is meaningless the next time you start FluidNC.
If all of this is confusing, just try to ignore machine space for a while. Most users will never need to think in machine coordinates. After you use your machine for a while and see that you can ignore them, you will be in a right state of mind to dig deeper into what it all means. We have spent hours trying to explain the concepts to people, who just are not quite ready to understand them.
You are probably looking at a screen right now. That screen is located at some exact latitude, longitude, altitude and rotational position, but who cares?. move it to the position that is meaningful to you and not the planet.
The short answer is no. The machine would not know which way the home switch because it does not know which side it is starting on. Also the range is calculated from the the switch direction, the mpos value and the max travel. If you were able to home in the middle, it would create a range only on one side.
If you turned off hard and soft limits and made sure the machine was on the correct side before homing. You would have virtually limitless travel in both directions with the switch mpos value near the switch (and no protection). Also please turn off all support questions. At this point you are suggesting you know more than us.