Open Source Telephony Engine
I've been using Asterisk a lot lately. It is well documented and works fairly well.
Its Dialplan language reminds be of BASIC.
The Asterisk book  is available for free online.
My primary project with Asterisk involves replacing a "legacy" system with a Voice over IP (VoIP) system. More specifically, though, my primary project involves replacing part of a legacy system with a VoIP system. The configuration is something like this: We are a relatively small group of people (around 300) on a much larger campus (several thousand) and we currently lease our phone network from the people who provide phones to the whole campus. We would like to control our own phone network, but with minimal impact (i.e., dialing an extension on the larger network should work from our internal network, and dialing our internal network should also be the same format).
The most common way to interface with an Asterisk server as a client is to use a SIP client (see the SIP Clients page).