O>Ну то есть для примера: предположим мне нужно создать клиентский сокет, то есть для подключения к серверу по TCP,
Чтобы подключится к серверу тебе нужно иметь его адрес. Если он у тебя есть и это IPv4 адрес, то нужен IPv4 сокет. Если это IPv6 адрес, то нужен IPv6 сокет. Тут всё максимально прямолинейно — никаких трюков.
Если у тебя нет ip-адреса, но есть, например, имя хоста, к которому нужно подключится, то ты вызываешь getaddrinfo и получаешь адреса. Дальше поступаешь ровно так, как написано выше. Тут простора для выбора ещё меньше — функция просто возвращает все необходимые значения аргументов.