I have homing switches and I'm unsure if my zero should be right after they are done homing or if the zero is supposed to be the center of my build volume?
The location of the homing position does not make any theoretical difference, you can zero (or set to any constant value) your axis positions at any desired position.
From a pracitcal point of view, you can consider the following aspects:
switches might get in the way of chips, switches might be damaged or the other way around, switches might get in the way of chip evacuations. From this point of view, the exteremity of the axes is probably a good option.
homing position should be easy to find, even if encoder values are not to be trused (e.g. axes can be ofset manually, without power). From this point of view, an axis extremity is a good option, since you can just drive the axis in one direction until you hit the switch.
The toolchainge position, if you have automated toolchange is an important position, having a precise toolchange position is important. Colocating the toolchange position with the homing position might be also a good idea (event better when the above criteria are also met with the toolchange position).
This depends on the machine specifically and the software that is being used to drive it, as well as the work placement and holding for the particular cut. Remember, there are typically two different zeros, a machine zero and a work area zero. Typically the tool moves to machine zero before travelling to the work area zero and beginning the paths. This means that entire travel distance needs to be consistently clear of obstruction to prevent collisions. If you have room to clear your entire cut area, you can use the switch locations as machine zero, typically the minimum travel on X and Y axes, and full retraction on the Z axis. You may want to reset your machine zero to a point inside mounting clamps for instance if there isn't enough clearance.
For me I typically set my toolpathing to use the bottom left corner of the part as the stock origin, so I set my work area zero to a spot on my material where there is sufficient room for the cut I'm making. I use the bottom left as it's pretty easy to reference for me, but any position would work as along as you can verify that there is sufficient area for your cut, and the stock is properly placed to match your toolpaths. Since my machine doesn't have homing switches I also have to be sure to manually set the machine zero to something out of the way of any hold downs and with enough clearance from the work before I set the work area zero.