The idle state is defined as 1 (for TTL serial), and here's why:
Let's say you have a data line with two states, represented by two voltages. For simplicity's sake, you choose 0 V and 5 V to represent 0 and 1 (TTL serial, for example). Now, this voltage is present on a wire between a transmitter and a receiver. When we choose the idle state as 1, if the line is broken (wire is cut), the receiver will know. If we were to choose 0, then the wire being cut is the same state as idle, which in some cases may be undesirable.
Wikipedia can explain it better than I:
The idle, no data state is high-voltage, or powered. This is a historic legacy from telegraphy, in which the line is held high to show that the line and transmitter are not damaged. ...
From Universal asynchronous receiver/transmitter
Note that idling at a high voltage is by no means an absolute, there are many different electrical standards used for asynchronous serial communication. RS-232 signals are the other way around, for example (although RS-232 uses a negative voltage as well, so the ability to detect damaged lines is still present). That is, RS-232 idles at approximately -13 V, which represents 1, and approximately 13 V represents 0.
Finally, there is nothing stopping you from creating a protocol that idles low. However, in regards to this:
And I guess if 0 is designed as idle flag, all devices will be in low voltage when idle. And maybe that means less power consumption?
Not really, at least with sanely designed circuits/chips. The nature of MOSFETs (which are used to construct the logic inside a UART) is such that they dissipate very little power when they are stable i.e. not switching, regardless of whether they are at "0" or "1". So the difference between idling at high or low is negligible.