Используется обычный С++ немного расширенный макросами.
К скетчу автоматически добавляется в начало что-то типа
#include <arduino.h>
и потом вся пачка исходного кода вместе с библиотеками и кодом платформы прогоняется через GNU g++ в пакетном режиме.
Аналогично, библиотеки пишутся на С++ с его возможностями с шаблонами, ООП и классами, естественно с учётом того что у нас 8Кб ОЗУ на всё. 8)