1-) Would you prefer a higher voltage than the MCU's working voltage?
- Using a higher voltage allows you to use a cheap linear regulator to supply the MCU voltage.
- Using a higher voltage allows you to increase the number of batteries and thus capacity.
AA battery voltage drops as it is used. For 2 AA batteries you need a boost converter to create the 3.3V the MCU needs. Fresh AA batteries start at around 1.6V but drain to about 1V at the end of their life.
2-) There are many battery management IC's around. Would you use any
circuit/IC (regulation etc.) between battery and MCU or would you
directly connect battery and MCU?
You would use a boost converter. e.g. http://www.ti.com/lsds/ti/power-management/step-up-boost-converter-products.page
Personally I use an LTC3525-3.3V but they are getting a little bit expensive.
3-) How would you read battery voltage? I am about the use Atmega's
internal reference 1V1.
Use the 3.3V VCC as the reference and read the battery voltage directly on one of the ADC pins.
4-) Do I have to use a diode for reverse voltage?
Not if you are using a boost converter with reverse voltage protection.
5-) Usually, buttons are used with a 10K pull_up, which will draw
300uA when button is pressed. Does it draw current even if it is not
pressed? Do you a higher resistor?
No, it does not draw current if not pressed an the MCU pin is set to input. The MCU has internal pull up resistors that you can use anyway, so you don't need the 10K pullup resistor. If you are going for really low power and have some open-collector / button that IS often on, you could put a 220K pullup resistor and turn the internal pullup resistors off.
My circuit consists of an Atmega328p, a 900Mhz RF, 2 buttons and 3
leds. It draws 60mA at a normal load. I try to keep it real short by
ATMega328P uses about 6mA when running and can be less that 100uA when sleeping.
If you are actually using an Arduino board then IIRC another 10mA is used by the linear regulator and more by the USB-Serial converter chip. Using a boost converter will therefore save you a lot of power.
If you have your own custom board then your power worries are due to something else, probably the 900Mhz RF. I would look there for savings. If it is an XBee, set it up to sleep cycle.