A modern computer contains hundreds of parts that can be turned on and off or clocked faster or slower independently. The granularity is smaller than visible chips, smaller even than cores. A large part of power saving consists on turning parts on and off at the best time. Each part should be turned off when not in use, but only if it's going to remain unused for a long enough time to be worth it (when the part restarts, it needs some time and hence some power to reboot and restore its old state).
Thus good power management requires well-written drivers. Hardware manufacturers are very cagey about giving out details about their hardware to people who write drivers. Even people who write closed-source drivers under a non-disclosure agreement often lack detailed documentation — and people who are writing open-source drivers for an operating system that the manufacturer doesn't care much about have it a lot worse.
So on PCs, Linux starts at a disadvantage, not for technical reasons, but for social reasons.
Linux is used in many embedded devices and higher-end devices that run on batteries. The kernel matters a lot for battery life; most smartphones run Android, which is based on a Linux kernel.
To save battery, make sure not to run a “screen saver” (go for a plain black screen), and stay away from 3D effects (which stress the GPU). Don't keep web pages with CPU-intensive animations and other effects (Chrome has a nice view of per-tab CPU consumption). Enable CPU frequency scaling while not connected to the mains; it makes your computer slower by slowing down the main CPU, which saves power. Run Powertop to see where your power is going given the way you use your computer.