Here's some examples that hope you think are well documented. Contact us if you need further help.
A CallGroup is a single entry definition of the group that a specific extension is in. A PickupGroup is a list of CallGroups an extension can pickup from. An Extension is in one CallGroup and multiple PickupGroups.
These examples leave off configuration information not related to the direct subject matter.
Values show here would be merged with an existing
In this simplest of use-cases each of the extensions can pickup a call to the other. Only the original target extension will ring.
 callgroup=1 pickupgroup=1  callgroup=1 pickupgroup=1
When 6500 rings, 6501 can dial *8 to answer the call.
This is a more typical setup where say, Reception, can pickup calls for Sales and Support.
[Reception] pickupgroup=1,2 [Sales_Adam] callgroup=1 [Sales_Bill] callgroup=1 [Support] callgroup=2
Now Reception can answer calls to any of the three named extensions.
To have Sales pickup each other, like Shared Pickup simply modify Sales as follows.
[Sales_Adam] callgroup=1 pickupgroup=1 [Sales_Bill] callgroup=1 pickupgroup=1
This example has one extension allowed to pickup four others who cannot pickup each other. And another set where two extensions are Shared Pickup. The Target of the Pickup (the Extension doing the Pickup) is used to define the CallGroup.
; 6520 can pickup four other extensions  callgroup=1 pickupgroup=1  callgroup=1  callgroup=1  callgroup=1  callgroup=1 ; These two are Shared  callgroup=2 pickupgroup=2  callgroup=2 pickupgroup=2
The above rules can be re-written slightly by using the original Extension as the group. These rules accomplish the same as above but have slightly better chances in future flexibility.
; 6520 can pickup four other extensions  pickupgroup=1,2,3,4  callgroup=1  callgroup=2  callgroup=3  callgroup=4 ; These two are Shared  callgroup=5 pickupgroup=5  callgroup=5 pickupgroup=5
The groups are defined by Target Extension and the Group members can Answer those calls.