What Inverse kinematics technique does the legacy IK solver use?
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 iksolver_execute_tree() calls 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 execute_posetree() calls 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 intern/iksolver/intern/IK_QJacobianSolver.cpp.