Although VNC and X11 seem like competing mechanisms, they are not. In fact, it is fairly common to find these two mechanisms working together in a Linux/Unix environment.
There are two ways that VNC and X11 work together. First, a VNC server can attach to an X11 server. This way, the X11 server can be exported to another computer on the network using a more network bandwidth efficient mechanism.
A VNC client can also run in an X11 server environment to display the content relayed by another VNC server.