There are different IK techniques like FABRIK, CCD, Jacobian inverse technique etc. Does anybody know which one Blender's legacy solver uses?
TL;DR The legacy solver uses Jacobian IK.
I'm not very familiar with the IK implementation, but here is what I've found out from Blender's source.
source/blender/ikplugin/intern/iksolver_plugin.c contains (parts of) the code that make up the legacy solver. In this code
execute_posetree() which creates the IK solver using
IK_CreateSolver(). This results in the creation of instance of
IK_QSolver. This object contains an instance of
IK_QJacobianSolve which is used when
IK_Solve and passes
IK_QSolver as argument.
This means the solver uses Jacobian IK. The actual implementation of the solver can be found in