Before they had built-in phone modems, the CPU communicates with a COM port for general I/O to the outside world.

COM port is just serial digital data transfer by RS-232 standard, unlike the parallel (printer) port, the COM port is very robust because the RS-232 standard requires the ability to short or improperly connect any of the pins to at least +/- 12VDC without doing any damage.

You connect two mainframes or personal computers' COM ports together using a "null modem" (crossover) cable having a common ground connection and with each's data transmit wire (pin 2) connected to the other's data receive wire (pin 3). You have to set the same baud rate, word length, parity, and number of stop bits on each device. Handshaking lines can often be considered "optional" so many of the cables only have these 3 wires. However using the comm app you may have to virtually enable a handshake line or two on each computer if the extra wires are not there and the devices are troublesome for some reason.

The terminal app or related program will usually be where you get to the communication settings, and once the terminal at each end of the communication cable is correct, then each person can type to the other in real time, perhaps simultaneously depending on "duplex" setting. Very much like an antique teletype machine, COM ports are also referred to as tty's.

With a GUI there should be a drop-down menu where you can set the receiving terminal to collect all following data from that point, into a file which you should be able to name yourself and store where you would like after the transfer finishes.

At the sending terminal you click the corresponding button to open the selection window so you can browse for the file you want to send out on the COM port.

To do it over the phone, the device at each end would then add an external modem plugged into the COM port. Then you can connect computers to the outside world using a phone cable. The modem is what detected the dial tone and dialed your target's number on the public phone network from your land-line location, as well as doing the audio modulation of your data so it would go well over the phone line. Modems started out pretty dumb and it was years before "smart" modems became common, but almost all of them responded to what is known as special AT commands. Somewhat specific set of AT's for different manufacturers and vintages. Receiving the ATD command followed by the target phone number, the modem would open the phone line, listen for a dial tone, then autodial the digits you had provided. If the other party responded then the intercommunication would begin.

But if you're just connecting two computer modems together in the same office without going over land lines there is no dial tone and no voltage being provided by the phone company either. The voltage is well covered with the battery arrangement shown, but a different AT command must be used on the sending modem so it will proceed to negotiate communication without the dialing process.

IOW all personal devices had com ports and that's what you used at first, not everybody was good with the cables and settings though so it never became very common knowledge. After built-in phone modems began to appear, devices retained COM ports in addition for a period of time before they started becoming more rare. Once there was no more COM port exposed to the user, yes you can go directly from modem-to-modem, but it's always another layer of complexity in addition to the underlying COM-to-COM foundation.

Remember terminals produce ASCII text through your designated COM port when typing but it's just binary data when sending files. You can send a Windows EXE file to a MAC for storage and it will be a faithful copy but naturally it's not made to actually execute on the MAC.