There are a couple of different techniques that can be used when implementing realistic looking shadows in games. Choosing the right one can not only impact the kind of performance your application is going to exhibit, but can also heavily influence how good the effect is going to look in the end.
An approach that isn't at all uncommon for 2D is referred to as ray tracing. Depending on the type of light, a number of rays are cast in an appropriate direction. Shadows are then implemented depending on which solids these rays actually intersect with. Some simpler games tend to create an overlay mask and fill in geometrically the parts of it that are "in the shadow". This mask is later overlaid on top of the usual scene and blended in order to create the aesthetic of darkened areas meant to represent shadows. More advanced 3D games tend to allow rays to bounce around the scene, carrying different information about the particular fragments that they intersect...