Что нужно для создания GUI библиотеки?
У вас существует недопонимание конвеера отрисовки/композитинга/серверов графических элементов. "opengl/vulkan" и "xlib" это совершенно разные уровни абстракции интерфейса. Они часто работают вместе и дополняют друг друга. Можно работать с контроллами через xlib и при этом рисовать это всё через OpenGL.
Вообще, с системами отрисовки графических элементов, различными уровнями абстракций сейчас такой дичайший зоопарк творится, даже сами разработчики порой уже путают эти уровни, впихивают невпихуемое туда, где его быть не должно, потом переписывают всё с нуля, старые костыли оставляют для совместимости, и т. д. Поэтому, крайне не советую начинать это неблагодарное дело, ибо не закончите никогда. Возьмитесь лучше за что-то попроще, напишите биндинги для GTK или Qt, например, если уж так нравятся гуи.
В учебных целях лучше что-то стоящее напишите, "стоящее" - это то, из чего можно извлечь хоть какую-то прибыль, реализовав его на том уровне, на котором у вас это действительно получится.
Все знают слово "человеко-часы", и про требуемую квалификацию все понимают, это тоже учтите, я сам любитель писать библиотеки и через это прошел, но еще учтите про финансы и не советую иметь глупость утверждать будто вам деньги за работу вовсе не нужны так как вам есть на что жить, все это тоже пройдено, работа без заказчика и обратной связи не формирует правильный опыт.
Ну а по теме:Вопрос заключается в том, какой бекэнд нужно использовать? opengl/vulkan или что то родное для каждой ОС, например XCB(xlib)?
Зависит от задач, если прежде всего кроссплатформенность - используйте кроссплатформенные решения, если прежде всего качество и удобство - используйте нативные, но впрочем у вас же нет реальной цели, а просто "для обучения", да делайте как хотите.