TCP даёт надёжную доставку и порядок байтов: потерянные пакеты повторно передаются, данные приходят в том же порядке. UDP этого не гарантирует - пакеты могут теряться и приходить не по порядку.
TCP - когда важна целостность (HTTP, gRPC, базы). UDP - когда важна задержка и допустимы потери: стриминг, игры, DNS-запросы.