The problem is that you are probably asking for the plain real solution, while Mathematica assumes that your parameters are complex and you ask for all complex solutions. This topic is an endless source of confusion. You can use ToRadicals and then pick manually the solution that looks real when the variables are in your expected range:
Solve[(2 Sqrt[2] V (m \[Epsilon]f)^(3/2))/(3 \[Pi]^2 \[HBar]^3) ==
Ntot, \[Epsilon]f] // ToRadicals
You can ask Solve to give the real solution, but it will be expressed as a Root object, which is appreciated only by Mathematica fans:
Solve[(2 Sqrt[2] V (m \[Epsilon]f)^(3/2))/(3 \[Pi]^2 \[HBar]^3) ==
Ntot, \[Epsilon]f, Reals]
Sadly, ToRadicals applied to the Root object gives an answer that is probably wrong for your needs:
Solve[(2 Sqrt[2] V (m \[Epsilon]f)^(3/2))/(3 \[Pi]^2 \[HBar]^3) ==
Ntot, \[Epsilon]f, Reals] // ToRadicals
Same for Reduce:
Reduce[(2 Sqrt[2] V (m \[Epsilon]f)^(3/2))/(3 Pi^2 \[HBar]^3) ==
Ntot && \[HBar] > 0 && V > 0 && m > 0 &&
Ntot > 0, \[Epsilon]f, Reals]
% // ToRadicals