Well here's what I found myself:
First "The MATLAB job scheduler (MJS) runs jobs in the order in which they are submitted, unless any jobs in its queue are promoted, demoted, canceled, or deleted."
(According to: http://www.mathworks.com/help/distcomp/howparallelcomputingproductsrunajob.html )
Second as I mentioned in my question it's a good approximation to count the number of expression terms, as a measure of its complexity. However NOT with this code :
length( children( expand( M1(k) ) ) ) % number of terms of M1(k) (too slow)
It's better to use "coeffs" command, which is far faster than the above code for large expressions:
length( coeffs( M1(k) ) ) % number of terms of M1(k)
So here's my procedure:
1. Estimating the complexity of each element of all my matrices,
2. Sorting them,
3. (To reduce the number of output mfiles, group them if necessary)
4. Assigning tasks (The task is to write them in a file using "matlabFunction")
Hope this helps someone having the same problem.
