My first guess is "bad starting values for numerical root findinig."
As a quick experiment, changing
{{n,h},{p1,0},{p2,0}}
to
{{n,h/2},{p1,h/2},{p2,h/2}}
in your Mathematica notebook makes all the complex numbers go away in this particular example.
But I cannot be sure that experiment is always choosing a good starting point for each of your variables in FindRoot. ListPlot of each of the roots do not seem to show sudden large changes like I would expect if my experiment was choosing some bad starting values.