Serial.print question

Can someone explain this statement for me? You can pass flash-memory based strings to Serial.print() by wrapping them with F(). For example :
Serial.print(F(“Hello World”))

It stores the string in program flash memory instead of SRAM. There is plenty of flash memory, but very little SRAM. You can save SRAM like that. I should start putting strings in flash as well.

Can one store commands this way in this way?
Void do_first_thing()
Serial.println("1st");

Void do_2nd_thing()
Serial.println("2nd");

What are you talking about? Do you mean functions:

void do_first_thing(){
  Serial.println("1st");
}
void do_2nd_thing(){
  Serial.println("2nd");
}

Then yes. But I still don't know what you mean.

All code is stored in FLASH (aka PROGMEM). Strings (character arrays) get copied to SRAM before being used if you use Serial.print("Foo"). it is very easy to exhaust the 2K of SRAM.

By using the F() macro, the string is only copied 1 byte at a time, leaving the full string (character array) in FLASH.