При отправке пакета от A до B маршрутизатор отправляет пакет с помощью NAT (трансляция сетевых адресов)?
Обычно нет. Это технически мог, но он не должен - нет необходимости NAT в этой ситуации.
(Я предполагаю, что C действует как A и B как «шлюз по умолчанию».)
Если нет, как А и Б могли общаться друг с другом?
Попробуйте противоположный вопрос: почему это NAT необходимо для некоторых видов связи?
NAT становится необходимым, потому что Интернет не знает, где находятся «внутренние» адреса; он только знает, где находится ваш «публичный» адрес. Таким образом, единственный способ получить ответы от интернет-хостов - сделать вид, что они были отправлены с публичного адреса маршрутизатора.
Но в вашем примере маршрутизатор прекрасно знает, где находятся обе подсети. И если маршрутизатор является шлюзом по умолчанию для обоих хостов, это означает, что хосты также достаточно хорошо знают, как достичь противоположной подсети: A имеет маршрут к B, B имеет маршрут к A, C имеет маршруты к обоим. Поэтому ранее упомянутая причина для NAT не применяется.