If you literally just want to know the extreme values used to generate the graphical representation of the legend, then you can actually just look at the graphic data directly.
plots = Table[
Rotate[
ContourPlot[{V} /. {r -> Norm[{x, y}], \[Zeta] ->
ArcTan[x, y]}, {x, -1, 1}, {y, -1, 1},
RegionFunction -> (Norm[{#, #2}] <= 1 &), Frame -> False,
ContourShading -> Automatic, ColorFunction -> "Rainbow",
PlotLegends -> Automatic, Axes -> False, Contours -> 30],
0 Degree], {\[Epsilon], 0.1, 0.3, 0.1}];
Extract[plots, Most /@ Position[plots, BarLegend]] // InputForm
What I'm doing here is finding the location of the data structure representing the legend (which I can see is a BarLegend) and then extracting those structures, and then applying InputForm to show the data directly rather than the graphical representation. You should find some elements that look like this:
BarLegend[{Blend["Rainbow", #1] & , {0.9090000000005358, 1.111000000002436}},<long list of contour data>,<options>}]
(I've elided the contour data and options)
So, for that particular legend, the extreme values are 0.9090000000005358 & 1.111000000002436.
On the other hand, if what you want to know is the extreme values of your data, then you should compute that from your data rather than infer it from the legend.
On yet another hand, if what you want is to display the bar legend with the extreme values of the legend labeled, then we need to nail down what your desired semantics for your legend is. A bar legend (at least as I think of it) includes colors for "everything above x" and "everything below y". So, if a bar legend had literal max/min values (in the semantic sense, not just in the graphical sense of my first example above), then any part of your plot that exceeded these bounds couldn't be colored. Imagine that your contour plot went off to infinity somewhere. Would you want to have infinite contours and a bar legend that was infinitely long? Instead of doing that, a bar legend just leaves its tail ends to represent "everything beyond this value".
But, of course, at the end of the day it's all just data. So, if you truly do want a bar legend that is semantically capped at its extreme ends and labeled as such, then there is probably some way to custom build your own legend graphic. I suspect that it would be tedious and time-consuming.