As you say, all four can be used, but you should choose the most addecuate for each application.
RS232 is used in medium lenght communications (50ft at 19200 baud, and 3000ft at 2400 baud, the longer the wire, the lower transmission speed you can achieve). It is full duplex, that means you can transfer AND receive data at the same moment. Also, data must be transmitted from one device to other, and another, and another, just in "series".
MODBUS is the same thing, the same phisical layer, but data is sent via ASCII codes, the messages starts and ends with a defined character; very used in industrial communications (PLCs, etc).
RS485 has a different phisical layer; it has the disadvantage that it is only half-duplex (only transmit OR receive at a moment, but you can make it so fastly that in most applications it isn't really a problem).
But... it can be connect multiple (as far as I remember, 128 devices) in parallel, so they can communicate between them, and if one doesn't work any more, it won't obstruct the whole bus.
Also, electrically, it consists in two wires (D+ and D-) that are inverted between them, performing a differential pair, making it -almost- immune to external noise, as transceivers only "see" the difference between both, being the "summed noise" cancelled. This helps to achieve high speed (100Kb/s) at a lenght of upto 4000ft (1,2Km).
I've been investigating a time ago, and don't find the CAN pshisical layer, but it's differential just like RS485 (taking in account what a disaster could a lost or noise-modified data pack could lead to...). The only difference is the protocol, this is how you transmit data (Start signal, speed, data order, etc).
Hope being useful.