NSolve gives you a general way to find numerical approximations to the solutions of polynomial equations. Finding numerical solutions to more general equations, however, can be much more difficult, as discussed in
"Equations in One Variable".
FindRoot gives you a way to search for a numerical root of a function or a numerical solution to an arbitrary equation, or set of equations.
In trying to find a solution to your equation,
FindRoot starts at the point you specify, and then progressively tries to get closer and closer to a solution. Even if your equations have several solutions,
FindRoot always returns the first solution it finds. Which solution this is will depend on what starting point you chose. If you start sufficiently close to a particular solution,
FindRoot will usually return that solution.
The variables used by
FindRoot can have values that are lists. This allows you to find roots of functions that take vectors as arguments.