IMPORTANT: This article is a work in progress.
TL;DR: Code listing is here.
Creating windows for use with Vulkan/OpenGL in OS APIs is... not so simple, to say the least. And especially so in Wayland. The Windows API is fairly straightforward in this aspect - create a class, create a window, and then create a surface (setup for OpenGL is more involved, but conceptually straighforward).
Wayland, on the other hand, requires you to understand Wayland, read 2-3 incomplete guides and a lot (and I mean a lot) of unintuitive documentation, complete a 100 steps long checklist and train your brain to create new contextual word associations - display is in no way related to a physical/logical/any-kind-of display, it is a Wayland session that connects you to the Wayland server/compositor/window manager, and why on earth is it called shell when we create "desktop-style user interfaces" with it?
No point rambling, let's create a window.
Wayland
EGL - The Embedded (?) OpenGL
We need to include EGL/egl.h to access the EGL functions and EGL/eglext.h to access Wayland specific bits.