Какие косяки меня могут поджидать?
Разный порядок передачи байтов (big/little endian), в двух ваших примерах он уже разный (учитывая, что STM32 -- little endian по умолчанию).
Есть способ лучше?
С точки зрения сгенерированного кода оба предложенных варианта одинаковы.
С точки зрения читабельности (и при отсутствии требований к порядку байтов) я бы предложил следующее:
void send_uint32(uint32_t v)
{
uint8_t transmitBuffer[4];
memcpy(transmitBuffer, &v, sizeof(v));
HAL_UART_Transmit_IT(&huart1, transmitBuffer, sizeof(v));
}
При наличии требований к порядку байтов я бы выбрал сдвиги.