Firstly the sample isn't mine, I've just tinkered around a bit with someone's to be easier (at least for me) to read

Well, in my oppinion (and it's quite like czar's *bow*), if you wish to create some nice damaged effect, then you'll want to create more levels of damage to parts of the car that you draw. Personally, I think the most managable and upgradable way would be if you made a list class with pointers to classes that hold every image for a car (in TDirectDrawSurface), damaged or not, in a logical buildup. Then also create another class for the car instances, with pointers to the actual picture parts or theirs, and the drawing, hitchecking etc methods. And if the car took damage, the pointers to the pictures of the car would just change to a more damaged image. That should be very simple!
Also, for such a game I'd probably make a hitchecker so you'd have to add a list of vertexes or rectangles bounding the car, and the hitchecker would check if something's in that or not. Alot faster than pixel-by-pixel for sure, and pretty accurate, as cars mostly are pretty blocky, not overly bent or something. Well, at least you can cheat off some curves and that doesn't seem at all.