Difference between UART and USART and the essense of oversampling on STM32F4
USART is an asynchronous transmission


Nope. 

USART is "Universal Synchronous/Asynchronous Receiver/Transmitter", which means the same hardware can support both synchronous and asynchronous communication. For the former it needs clock, so it is implemented in USART periphery but is not used when configured in UART mode.


  Also, is oversampling at the RX mainly done to detect errors? I see it
  samples 3 bits in the center, and if all of them are the same, there's
  no error otherwise there is.


The oversampling (8/16) is just a fancy way to say that RX line is sampled with higher frequency than the baud rate. The main purpose of oversampling is to increase tolerance to  clock deviation.

How the sampled values are used is different at different times. For example to detect start bit a special sequence of 10 samples must be matched. When data bits are received either 3 samples (not "3 bits"!) or just a single sample (if ONEBIT is configured) in the middle are used for noise detection and data recovery.

If not all of the 3 samples are the same it does not automatically mean an error. The majority wins and is used as received bit value. At the same time noise error flag is set and can be verified in your code or used to generate interrupt in some special modes.