min[reg1_, reg2_, tolerance_] :=
Block[{
rn1 = RegionNearest[N@reg1],
rn2 = RegionNearest[N@reg2],
start, iter, pt1, pt2
},
start = RegionCentroid[reg1];
iter[pt_] := rn1[rn2[pt]];
pt1 = FixedPoint[iter, start,
SameTest -> (Norm[#2 - #1] < tolerance &)];
pt2 = rn2[pt1];
{Norm[pt1 - pt2], {pt1, pt2}}
]
This version of the function does not require a point in region1. It uses RegionCentroid to generate that point.