ACPI is a standard for computer hardware that allows the operating system to discover and configure power management for hardware devices.
There are three ACPI states that matter:
S1: All processor caches are flushed, and the CPU(s) stop executing instructions. Power to the CPU(s) and RAM is maintained; devices that do not indicate they must remain on may be powered down.
S2: The CPU is powered off (unsupported)
S3: Commonly referred to as Standby, Sleep, or Suspend to RAM. RAM is still powered.
S4: Hibernate. All content of RAM is saved to the hard drive and the machine is entirely powered down.
Often, you can configure in the BIOS if you want your computer to sleep using S1 or S3. S3 uses less power, but S1 is generally more compatible.
HAL (Hardware Abstraction Layer) provides access to hardware devices. HAL is a single daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host computer. Both KDE and Gnome depend on HAL. Since Karmic, HAL is deprecated. The the monolithic hal daemon will be gradually replaced by separate systems such as DeviceKit-power, DeviceKit-disks, udev, PulseAudio, and NetworkManager.
IS HAL REQUIRED OR OBSOLETE?
The gnome-power-manager is a program with a graphical user interface that subscribes itself to power events and acts on them. It shows you the battery status on laptops and dims down the screen if on battery for example. It will also shutdown or hibernate the computer after some idle time or before the battery runs out, if a user is logged in.
By default, gnome-power-manager will use pm-utils if installed (eg pm-hibernate, pm-suspend).
Although not absolutely required, these packages are necessary to get much working with power management.
Most hardware has some special quirk required to get it to suspend properly. The package hal-info provides a database of these special rules for specific hardware.
pm-utils is the new suspend and powerstate setting framework. It is usually used by HAL to execute the various hacks needed to work around bugs in drivers and subsystems that are not yet aware of suspend. It is easily extensible by putting custom hooks into /usr/lib/pm-utils/ or /etc/pm. The executables provided are pm-hibernate, pm-suspend and pm-suspend-hybrid and pm-powersave. These are triggered by other programs, or can be run manually as root.
Acpid is used to trigger events related to power management, such as closing the lid of a laptop or unplugging the power supply.
In the near future, acpid is will be phased out of ubuntu. Acpid uses /proc/acpi/event which as been deprecated in the kernel since 2.6.23. The project home page says there are plans to support the newer netlink socket method, but there does not appear to be any progress in this direction.
Question: I am not sure the current state of acpid in ubuntu. Some say it will be used if present, some say it is ignored.
Uswsusp (User-space SoftWare SUSPend) provides a set of alternate methods for suspending to ram or disk. You should not need to install this package unless sleep and hibernate does not work for you.
The pm-utils scripts can be configured to use the executables in this package, but currently you must manually configure it to do so (by editing /etc/pm/config.d/00sleep_module).
This package provides some status scripts that are relied upon by other parts of Gnome and Debian, but it is not central to the operation of suspend and resume.
No longer useful
acpi-support: debian specific package that duplicates functionality in hal-info and pm-utils. It is being phased out in ubuntu. https://wiki.ubuntu.com/AcpiSupportDeprecation. Based on this discussion it seems that it will be deprecated in debian as well. I think it should not be installed.
http://wiki.debian.org/Suspend debian software suspend overview
http://people.freedesktop.org/~hughsient/quirk/quirk-suspend-index.html a very useful guide for debugging problems with sleep and configuring quirks for various hardware