About the battery use of IMAP IDLE: in the words of the late Steve Jobs, "It's a power hog".
What @doctorow referred to above is something that appears to be necessary on Android 4 and above (and no, none if it is documented anywhere).
In addition, in case we're talking about Gmail, its IMAP IDLE implementation is incomplete, since 2007:
https://groups.google.com/forum/?fromgroups=#!topic/hosted-the-basics/QMXBIwvzM5I... and it "tickles" the app every five minutes in a way that can't be ignored a forces a (fairly quick) resync.
There is a good reason the native Gmail app does not use IMAP (and which is probably why nobody's in a hurry to fix Gmail's IMAP implementation -- "see, our app is so much better").
To make it short:
The most traffic friendly option (for roaming, etc) is POP3 with "preload headers only", marginally better than IMAP with "preload headers only", and IMAP in push mode will use more traffic and more battery.
One additional twist: when using IMAP, my app downloads attachments / inlines only as necessary, while with POP3, the entire message has to be downloaded when you open it, including attachments.
But, there is a setting (in global app settings, extended mode) to limit the max. message size that the app will automatically completely load when a message is opened. The default is 5K for mobile, and if the message is larger, you'll get two buttons: "Load up to 5K" vs "Load completely: xxxK".
Now of course all of this also depends on how much mail you actually receive and read: preloading headers only isn't going to save much traffic if the messages you receive have attachments, and you open them all the time.