Best power saving mode for Arduino UNO?

Hello! This forum post is actually a bunch of questions. Any help is appreciated! Question 1: I have been experimenting with putting the Arduino to sleep with the avr/sleep.h library. I used SLEEP_MODE_PWR_DOWN. There are other sleep modes, but what do they do? Question 2: I also disabled some powers with the avr/power.h library:

  power_adc_disable();
  power_spi_disable();
  power_timer0_disable();
  power_timer1_disable();
  power_timer2_disable();
  power_twi_disable();

What is twi and spi? Is there anything else I can disable (e.g. BOD) and how do I do it? Question 3: Is there a power saving technique (code) that doesn't halt the program on the Arduino? Question 4: In a sketch where I use tone, Serial, no PWM, what can I do to save power (my battery is starting to run low)? Thanks!

Question 1: There are other sleep modes, but what do they do? Read the ATmega328P datasheet for information about the sleep modes.

Question 2: What is twi and spi? Is there anything else I can disable (e.g. BOD) and how do I do it? They are serial communication interfaces often used to communicate with peripheral devices such as Ethernet, SD card, RealTime Clock...

Question 3: Is there a power saving technique (code) that doesn't halt the program on the Arduino? I believe the sleep modes all stop the processor clock.

You can switch off unneeded peripherals (e.g. TWI, SPI, serial, counters, ADC conversion). And you might also lower the CPU clock. Have a look into the ATMEL datasheet on how to do this.

However Arduino has poor power efficiency due to the linear voltage regulator. If you want to go low power one of the first things is to get rid of the linear regulator and the serial chip. Also the power led has to go.

If I disable SPI and TWI, will my Arduino still be able to print data to the Serial Monitor or download sketches?

Why don't you just try? Trying gets you results faster than reading the specs or asking in the forum.