It doesn’t know.
- It might be able to detect a collision, but even if no collision occurred then it would not know if the node received the data.
- It’s not like RX2 is used when RX1 fails: just one window is selected by the backend (it’s not up to a gateway to decide),
and TTN prefers RX2 so probably skips RX1 altogether.
So, if a node requests an ACK for an uplink but does not receive it, or if an application requests an ACK for a downlink but does not get it, then they need to decide for themselves to try again.
(Note that ACKs are very limited anyhow.)