Let's start with a prametrized surface, any one will do but I guess being orientable helps in this case. Then calculate the unit normal, and then create Manipulate object that lets you see how the normal behaves
\[Sigma][u_, v_] := {(2 + Cos[v]) Cos[u], (2 + Cos[v]) Sin[u],
Sin[v]}
n[u_, v_] := Evaluate[Normalize[
Cross[D[\[Sigma][u, v], u], D[\[Sigma][u, v], v]]
]]
surfacePlot =
ParametricPlot3D[\[Sigma][u, v], {u, -Pi, Pi}, {v, -Pi, Pi},
PlotRangePadding -> 1];
normalPlot =
ParametricPlot3D[n[u, v], {u, -Pi, Pi}, {v, -Pi, Pi},
PlotStyle -> Opacity[0.5]];
Manipulate[
{Show[{
surfacePlot,
Graphics3D[{Thick, Red,
Arrow[{\[Sigma] @@ pt, \[Sigma] @@ pt + n @@ pt}]}]
}],
Show[{
normalPlot,
Graphics3D[{Thick, Red, Arrow[{{0, 0, 0}, n @@ pt}]}]
}]
}
,
{pt, {-Pi, -Pi}, {Pi, Pi}}]