Just because an entry in the file system is deleted does not mean the file descriptor stops working.
When a GUI application is started it connects to /tmp/.X11-unix/X0 and gets a file descriptor. From now on it is using the file descriptor, /tmp/.X11-unix/X0 is no longer needed by this application and, therefore, if you delete it, nothing happens to running applications.
However, trying to start new applications would not work any longer.
Linux has an extension that allows using names that are not bound to the file system: abstract names, see unix(7) for a description. Since these do not use the file system it does not matter at all if the file system entry has been deleted.
It looks like X supports both types of sockets. So clients can choose which one they want to use. So after removing the socket from the file system new clients that use the abstract name can still be started whereas new clients that use the socket in the file system will fail to start. However, old clients will continue to run in both cases.