I believe PROGMEM is used to store large data (e.g. strings) that don't change. So it frees up the SRAM.
in the Ardunio Reference it is mentioned that.
"Using PROGMEM is also a two-step procedure. After getting the data into Flash memory, it requires special methods (functions), also defined in the pgmspace.h library, to read the data from program memory back into SRAM, so we can do something useful with it."
If I have to load the data into SRAM before using it then how is it efficient than directly stroing into SRAM by defining vaiable normally