To clear things up for you, the FIFO is a 32-block of 3*16bits registers. It only stores accelerometer and gyroscope data. Temperature and magnetometer data is not FIFO'd ; The magnetometer has a different serial interface by the way.
In addition, you don't communicate with the FIFO directly from your microcontroller/processor. But you read the OUT_[...] registers from your serial interface. The chip manages the FIFO internally. Example of a read sequence :
Can it be that FIFO can be used only for accelerometer?
Yes, if you've set the sensor to accelerometer only. Otherwise the FIFO is filled with both accelorometer and gyroscope data. The distribution of the data depends on your ODR (Output Data Rate) of each one ; If the ACC and GYR have the same ODR, then their data will be evenly distributed in the FIFO.
Can it be that FIFO is simply not working on this chip and it should not be enabled and used?
How did you come up with such conclusion ? Please read the datasheet carefully. I know it's a bit hard to do when you're new to electronics. But comprehension is the most valuable skill in this field.
Do they have any FIFO on the magnetometer?
No
All pictures were screened from the datasheet you gave.
PS : if you're planning on writing a driver for this sensor, don't reinvent the wheel and check STMicro's github of their C-drivers for their sensors : https://github.com/STMicroelectronics/STMems_Standard_C_drivers