Normally the algorithm used is a newly developed algorithm called Core-ALT. @andrzej can probably provide some links to resources relating to that.
The difference between shortest and fastest is that the shortest takes the shortest path between the two points, whereas fastest takes the fastest. So if there is a highway with a faster speed limit nearby, it is likely that would be taken for fastest rather than a shorter route which has slower speed limits as the duration using the highway is shorter.
Please note though that our system no longer uses the “fastest” route, but a “recommended” route which also takes into account things like the type of way (for pedestrian profiles, footpaths are preferred over roads)