Chris Hecker's rigid body dynamics is good, he derives the formula for impulse resolution, which has a coefficient of restitution, which when one gives the elastic rebound effect (i.e. no energy is lost in the collision.) The equation derived is also in Ian Parberry's 3D math primer for graphics & game development, which I found a bit easier to follow.
Chris Hecker's article assumes you have some way of detecting when there is a collision, and requires you have two bits of information: 1.the normal of the surface you hit and 2. the point of impact (only required when shapes can have angular momentum).
I think the hardest part is the actual detection of collision and returning the information needed for the resolution. The best solution I've fount is Erin Catto's GJK implementation
. The source code is on the box2d site under downloads. And I think it is the method used in Box2D.
Note: this is different to Casey's use of GJK. Casey's method gives you a yes/no answer whether something is overlapping, whereas Erin's gives you the information you need to solve the collision resolution equations (point of collision, and surface normal).
NOTE: You can use Casey's method with the EPA algorithm to resolve a collision (i.e. not overlap anymore) and find the surface normal, but from what I know, you can't get the Point of Collision from it.