What is the difference between reading the FIFO registers(FIFO_DATA_OUT_L,FIFO_DATA_OUT_H) and Sensor output registers(OUTX_L_XL to OUTZ_H_XL) both are same?which is recommended to get the raw data from the sensor
Reading the sensor output registers (OUTX_L_XL .. OUTZ_H_XL) gives you the most recent sensor readings. Reading the FIFO can give you data that occurred in the past. By using the FIFO, you can set up the chip to automatically sample and store data in the FIFO, at the rate you want (e.g. 52 Hz, 104 Hz, 208 Hz, ...) and you don't need to bother your MCU to continuously poll the LSM6DS3. Only at some point you may bulk-transfer all samples to your MCU. This saves CPU time and possibly power. Both are viable methods of reading the LSM6DS3 - depends on your application.
If your MCU does other tasks besides polling the LSM6DS3, it may be better to use the FIFO method, as it ensures you won't miss any data and your MCU will be less involved in communication with the LSM6DS3.