Blender approaches shadows in two ways. The first is with raytracing. Raytraced shadows are mathematically correct, but they take longer to render. They're calculated by projecting rays of "light" from a light source and using the direction of those rays to create the shadow. The other type of shadow in Blender is called a buffer shadow. Buffer shadows are rendered much faster than raytraced shadows, but at the cost of quality and buffer memory.