Xwayland adds support into the X server to push the images to a wayland buffer, instead of the screen. You dont have to modify any clients to get this, but you do have to modify the X server. Its not seamless for the X server, it does actually know that its not in TOTAL control anymore because theres a special wayland code path (it gets wayland input devices, see above)
Wayland is a complete window system in itself, but even so, if we're migrating away from X, it makes sense to have a good backwards compatibility story. With a few changes, the Xorg server can be modified to use wayland input devices for input and forward either the root window or individual top-level windows as wayland surfaces. The server still runs the same 2D driver with the same acceleration code as it does when it runs natively. The main difference is that wayland handles presentation of the windows instead of KMS.
The X server, with the Wayland backend on it (xwayland), keeps listening Weston via a special Wayland protocol interface. Weston binds such interface and announces back the socket that X clients will be connecting to (xserver_send_listen_socket event) and the first X client that was just connected (xserver_send_client event).