Reading FIFO in LSM6DS3
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.