On the Linux side there is a device associated with a serial UART. You have to know which UART you are using (and if that UART is already used by something like serial console, then you have to stop the other user first). Then it is just reading or writing from that device’s file for the most part like reading or writing from any file.
However, device special files also have “IOCTL” functions for extended functionality not covered by ordinary read/write. It depends on the exact driver being used as to which IOCTL matters. An example of a non-read/write function requiring an IOCTL call is to set speed or stop bits. If the ports at each end are already running correctly, then there is no need for an IOCTL of any kind. The default for ports on Jetson’s is 115200 8N1 (speed 115200 baud, 8-bit data, no stop bit, 1 parity bit), and if your port on Windows runs with the same setting, then everything is entirely just file reads/writes.
Almost all issues people have with UARTs are independent of whether the other end is Windows or Linux or anything else. Much of it is getting the two ports set up with matching parameters, e.g., if one end runs speed 9600, and the other runs speed 115200, then it will fail. Also, the UARTs on the Jetsons use a logic level of 3.3V, and if your other UART runs on a different voltage, then this will fail.
I don’t know about read/write to UARTs (COM ports) on Windows, but I suspect it is much like Linux and does not require much in the way of special handling so long as you know you are going to the right UART and that the UART is running with the correct setting (default of 115200 8N1).