Phase can be used to execute stuff before and / or after each phase. Over in Java land, we have a new system (new eclasses and new version of java-config) in our overlay which is using of the phase hooks to initialize the Java environment at the beginning of each phase. This new system is needed so we can (finally) unmask Java 1.5.
IMHO ebuilds really shouldn't use the phase hooks. They are there to be used by /etc/portage/bashrc, i.e. the user.
@blubb, was the original intention- the exception to this was java crap because what they need is proper env saving/restoration; since that's not there, phase hooks was the only way for them to do it without modifying a boatload of ebuilds.
This is available in portage-2.1 which is now stable.
STABLE is only used by the ATs