SELECT ST_Length(ST_GeographyFromText(ST_AsText(ST_Line_Substring(line,ST_Line_Locate_Point(line,ST_ClosestPoint(line,fpt)),ST_Line_Locate_Point(line,ST_ClosestPoint(line,tpt)))))) As length_m,
ST_Distance(ST_ClosestPoint(line,tpt)::geography, tpt::geography) as to_point_to_line_m,
ST_Distance(ST_ClosestPoint(line,fpt)::geography, fpt::geography) as from_point_to_line_m,
ST_AsText(ST_ClosestPoint(line,tpt)) as to_point_on_line,
ST_AsText(ST_ClosestPoint(line,fpt)) as from_point_on_line,
ST_AsText(tpt) as to_point,
ST_AsText(fpt) as from_point
FROM ( SELECT 'SRID=4326;POINT(1)'::geometry As tpt,
'SRID=4326;POINT(2)'::geometry As fpt,
ST_Segmentize('SRID=4326;LINESTRING(123)'::geometry, 0.00001) As line
) As foo;
Distance length_m, distance to_point_on_line and from_point_on_line. :)