Tangent point coordinates when the curve is a set of points

Assuming the curve is convex and $(0, b)$ is "outside" the curve, you can use the convex hull of the point and data.

b = -0.01;
bp = {0., b};
c = ConvexHullMesh[Join[{bp}, data]]["Coordinates"];
p = Position[c, bp][[1, 1]];
l = Cases[MeshCells[ConvexHullMesh[Join[{bp}, data]], 1], (* lines containing bp *)
   Line[i : {___, p, ___}] :> i];
m = First@Ratios@First@Differences@c[[#]] & /@ l;   (* slopes of those lines *)
(* tp = line segment with greatest slope containing the point bp *)
tp = InfiniteLine[ c[[ l~Part~Last@Ordering[m] ]] ]
(*  InfiniteLine[{{0.0270945, 0.0108}, {0., -0.01}}]  *)

Show[
 ListLinePlot[data, PlotRange -> {{0, 0.1}, {0, 0.05}}, PlotStyle -> Red],
 Graphics[{Point[bp], tp}],
 PlotRange -> All
 ]

enter image description here


ClearAll[slope, opt]
slope[rf_] := Divide @@ Reverse[rf - #] &;
opt[dt_, rf_] := dt[[First @ Ordering[slope[rf] /@ dt, -1]]];

rfp = {0., -.01};
opt[data, rfp]

{0.0270945, 0.0108}

Row[Show[ListLinePlot[data, 
     Epilog -> {Red, PointSize[Large], Point[{rfp, opt[data, rfp]}] }, 
     ImageSize -> Medium], 
    Plot[rf[[-1]] + x slope [rf][opt[data, rfp]] , {x, 0, 0.2}, 
     PlotStyle -> Green], 
    PlotRange -> #] & /@ {{-0.02, .07}, {{0, .07}, {-0.02, .03}}}, 
 Spacer[10]]

enter image description here

You could also use the simpler but slower:

opt[dt_, rf_] := Last @ SortBy[dt, slope[rf]];