Как организовать структуру грфической библиотеки на C для микроконтроллера?
Все верно, но так же нужно понимать, что библиотека пишется под МК у которого очень ограниченная память. Может так случится что ваша мегакрутая библиотека займет всю память и будет жутко тормозить.
Может имеет смысл описать общий алгоритм работы каждого уровня и реализовывать это оптимизируя  для каждого отдельно взятого МК и дисплея, на самом деле их не так много и не все они попадут к вам в руки
1. функции рисования кнопок, меню, радиобатонов, выпадающих списков и прочих сущностей где?
2. устройства ввода, указатели, курсоры где?
3. обработка событий от устройств ввода/эмуляции есть?