What is the exact difference between synchronous and asynchronous serial transmission?
Is clock wire always needed in synchronous serial? If not, how do we
  synchronize?


As far as I'm concerned you can send data synchronously by either using an external clock signal or modifying the data stream to contain a clock signal à la Manchester encoding or data scrambling to keep the bit changes ticking over.


  When we say asynchronous, does it always mean we use start and stop
  bits? If not, how do we synchronize?


Asynchronous transmission always needs a start bit so that (for example) the UART receiver can have enough time to sort itself out and calculate where the middle of the data symbol is so that it can sample the data stream at the most optimum point for minimal error. Stop bit(s) are also required as are transmission breaks i.e. sending a continuous stream of asynchronous data can mean never being able to have a receiver sync up to that data. Having a transmission break that is longer than one byte means the receiver can sync up.

However, for synchronous transmissions, frame markers are usually required that are embedded into the data in order to provide a sync reference. It's not just about aligning the bits but also aligning the message.


  I'm having a hard time understanding the exact distinction between
  synchronous and asynchronous serial


There is no exact definition. What's the exact difference between butter and margarine for instance.