The new flash-related feature allows READ-ONLY data ("const") to be accessed as variables from normal C code. Since since the AVR has a separate address space for flash, this is a moderately big deal. In older versions of the compiler you had to do your own address calculations and access the flash memory via function calls. As far as I know, you can't write to flash variables from C; flash requires a bunch of additional effort to be writable at all (run from bootloader section, have protection fuses set appropriately, flash to be written NOT in bootloader section, write a full "page" at a time, etc.)
However, you should be able to go from
struct {int a, b, c} PROGMEM foo = {0xdead, 0xbeef, 0xd00d};
int d = x + pgm_read_word(&foo.c);
to struct {int a, b, c} PROGMEM foo = {0xdead, 0xbeef, 0xd00d};
int d = x + foo.c;
Which is a major simplification for traditional C programmers. I've had to explain rather often that you can still use the compilers address calculations and data typing, rather than having to do something likeint d = x + pgm_read_word(((char *)&foo) + 2 * sizeof(int));