While I agree with your conclusion, your explanation is not right.
X11 is the 11th version of the X protocol, it is not an implementation. The Xorg server is the only relevant implementation for the server side of things, and for X11 window managers and X11 compositors there’s only libx11 (which is very horrible) or libxcb (slightly less horrible). Both of those are about as high level as libwayland-server + libwayland-scanner - which is to say, nearly as low level as it gets.
wlroots in contrast provides comparatively high level libraries / components, which make the implementation of compositors less of a headache than having to mess around with barely documented xcb functions.
While I agree with your conclusion, your explanation is not right.
X11 is the 11th version of the X protocol, it is not an implementation. The Xorg server is the only relevant implementation for the server side of things, and for X11 window managers and X11 compositors there’s only libx11 (which is very horrible) or libxcb (slightly less horrible). Both of those are about as high level as libwayland-server + libwayland-scanner - which is to say, nearly as low level as it gets.
wlroots in contrast provides comparatively high level libraries / components, which make the implementation of compositors less of a headache than having to mess around with barely documented xcb functions.