The "WiFi link" ESP32 in my case is the AP (Access Point) because these data loggers are located in the middle of nowhere where there are no networks to connect to. It does not have to be an AP, but it and the receiving laptop must be connected to the same network.
These are very explicitly ESP32s, not ESP8266s. Several reasons for this:
1. ESP32s have two available UARTS. You can use one to transmit data, and the other for monioring/setup. On an ESP8266, you can SWAP the UART connections from the UART-USB converter to port pins, but then monitoring/setup is difficult. Just trust me on this.
2. ESP32 supports hardware/software handshaking. I don't believe the ESP8266 does. Handshaking is required for reliable data transmission.
3. The ESP32 has true EEPROM, which for me was easier to use to save setup parameters.
On the subject of UDP vs Telnet, it depends on your needs. My understanding, which may be lacking, is that UDP sends out messages "Here is some data if anybody wants it" without concern if a particular device received it. Telnet sends data to a specific device "here is the data, tell me when you've got it or I'll send it again." Telnet handles all the retransmission/error correcting automatically without any action on your part.
Did I do this the best way? Probably not. Did I accomplish my goals? Yep. At any rate, here's some details on implementing UART flow control, which were elusive.