Ok, I might not understand the point of this discussion, but you appear not to be interested in
Limit[(1 + b)^2/Sqrt[1 - b^2], b -> 1, Direction -> "FromBelow"]
or
Limit[(1 + b)^2/Sqrt[1 - b^2], b -> 1, Direction -> "FromAbove"]
which is what Daniel suggests early on. Here is a different way of writing what Daniel has done in a much shorter way. First, I try to figure out for which "b" I get a certain value:
$MaxPrecision = 550
sols = Solve[ff == c, b]

The first solution is the real valued solution. Now you can use:
sols[[1]] /. SetPrecision[c -> 9999999999999999999999999, 450]
and obtain something identical (plus/minus a couple of digits) as the simpler code before:
NSolve[ff - 9999999999999999999999999.`450 == 0, b]
You can get really close to the pole:
$MaxPrecision = 950
sols[[1]] /. SetPrecision[c -> 9999999999999999999999999999999999999999999999999999, 850]

I do not really have an easy means of verifying these numbers though. How close to the pole do you want to go?
There are not many applications, I am aware of, that need to such a high precision though, so I would like to hear of yours. Always nice to be able to tell students why one would need these high precisions "in real life".
Best wishes,
Marco