In the documentation I found that the fit is good is the status is CONVERGED. But sometimes I obtain OK or SUCCESSFULL (that sound good), should I accept the fit in these cases? What is the meaning of these two status? How do they differ from CONVERGED?

If the status is converged it is OK and SUCCESSFULL. However, it is possible that after Migrad converged, you have run Hesse and then failed. In that case the fit is not anymore SUCCESSFULL.

Reading the documentation we find that OK and SUCCESSFUL May happen when e.g. the error matrix is not defined positive or when you start too far away from the minimum or even when it is simply not finding the right answer.
What this means is that then the uncertainty on the parameters cannot be trusted too much. If so, we think is worth to try to change the chain of commands.
Instead of doing Migrad only, switching to:

simplex → simplex → migrad → minos

Simplex is so simple that it can’t even be trusted too much for the uncertainties. Its worth lies in going close to the minimum enough for migrad to work (in case you were too far away). Repeating it twice is just for precaution (if things go ok it asking for it twice shouldn’t bring any improvement).

Minos requires migrad to be run first, but its advantage lies in the fact that the uncertainties are asymmetrical and are computed from the chi2 instead of from the error matrix: it shouldn’t matter at all if it is not defined positive.

Would it then be statistically correct to use the results from Minos?

It is possible that you end up in a local minimum and then for Migrad the result is SUCCESSFULL, but it is not the right result.

If you start from parameter far way it is not bad in some case to use Simplex first and then Migrad.
when you are close to the minimum, Migrad works much better than Simplex and in addition can provide you the uncertainties using the inverse of the Hessian.
Minos will provide you more correct uncertainties, and it takes into account the fact that the chi2/likelihood function is not a perfect parabola around the minimum.
However, if you are not at the correct minimum, the uncertainty of Minos are also not correct. Sometimes, running Minos, Minuit finds a better minimum, and in that case re-run automatically Migrad first to correct for this.
One possible check you can do is repeating the fit few times, starting from different initial parameters and see if you always obtain the same result.