According to the documentation, this is how each method fits the model:
CSS minimises the sum of squared residuals.
ML maximises the log-likelihood function of the ARIMA model.
CSS-ML mixes both methods: first,
CSS is run, the starting parameters for the optimization algorithm are set to zeros or to the values given in the optional argument
ML is applied passing the
CSS parameter estimates as starting parameter values for the optimization algorithm.
In a model with lags of the dependent variable, a initial set of observations must be somehow defined in order to evaluate the sum of squares or the likelihood function.
ML deal with this issue differently.
CSS sets the initial observations to zeros, while
ML uses the initial state vector returned by the Kalman filter.
ML is supposed to be more accurate since, instead of setting these initial observations to zeros, it uses the sample data in order to get an estimate of these values.
For some details about the initialisation of the Kalman filter you may see
this post or
Notice that one thing is the starting parameter values and another is the set of initial observations. The former can be specified through the argument
init, while the latter are specified internally by each method as described before. This distinction is important in order to not get confused when reading the documentation.
In your code, the following error is obtained for the ARIMA(10,1,2) model:
Error in optim(init[mask], armafn, method = optim.method, hessian = TRUE, :
non-finite finite-difference value 
Roughly, this means that the optimization algorithm failed to reach a result.
The error arises for
method="ML" (actually for the
ML step of the
CSS-ML method). A further insight shows that the initial parameter values obtained from
CSS are apparently not good enough. The following gives error:
arima(tsTrain, order=c(10,1,2), method="CSS-ML")
while using zeros (the default) as starting parameters the optimization algorithm converges to a solution:
arima(tsTrain, order=c(10,1,2), method="ML")
At first glance, this may seem strange, since the
CSS step is supposed to provide starting parameters relatively close to those that maximise the likelihood function. A look at the autocorrelations of the data
acf(tsTrain); pacf(tsTrain) suggests that the model ARIMA(10,1,2) is not plausible for the data, in fact this model is far from the model chosen by
forecast::auto.arima, ARMA(1,0,0)(2,0,0). This may explain why estimates from
CSS were not reliable as input for