Does two system's clock synchronises to communicate with each other?
Your question is a bit vague, depending on what is communicating, so I will try to give a general answer. There are essentially two big ways of communicating:


Sending data together with a clock signal (source synchronous): this is used in I2C, RAM, SPI
Sending just data and let the other side recover the clock from it (clock recovery): this is used in USB, PCI Express, Ethernet (I think)


The bottom line is that synchronization is important, two systems will never have exactly the same clock because they drift and yet they have to agree on some clock when transferring data. Both approaches have advantages and drawbacks:


source synchronous: can achieve higher speed but needs one more wire and increases complexity of the receiver because it has to deal with two clock domains (its own and the sender's)
clock recovery: one less wire but requires the signal to toggle often enough, a process known as self-clocking which adds overhead to the signal (for example USB sends 10 bits for 8 bits of data, this is known as 8b/10b encoding)