Did you miss something important from the help?
Flatten[list]
flattens out nested lists
In your examples, to obtain nested lists you must add one pair of curly brackets { }. So:
In[31]:= u = {{a, b}, {c, d}}
exp = {{0 u, u}, {2 u, 3 u}}
Flatten[{exp, {{1, 4}, {2,
3}}}](*Example similar to the one from the Help*)
Flatten[{{exp, {{3, 4}, {2,
1}}}}](*How do you explain the reordering you get in the matrix \
from these parameters?*)
Flatten[{exp, {{4, 2}, {1, 3}}}] (*same question*)
Out[31]= {{a, b}, {c, d}}
Out[32]= {{{{0, 0}, {0, 0}}, {{a, b}, {c, d}}}, {{{2 a, 2 b}, {2 c,
2 d}}, {{3 a, 3 b}, {3 c, 3 d}}}}
Out[33]= {0, 0, 0, 0, a, b, c, d, 2 a, 2 b, 2 c, 2 d, 3 a, 3 b, 3 c,
3 d, 1, 4, 2, 3}
Out[34]= {0, 0, 0, 0, a, b, c, d, 2 a, 2 b, 2 c, 2 d, 3 a, 3 b, 3 c,
3 d, 3, 4, 2, 1}
Out[35]= {0, 0, 0, 0, a, b, c, d, 2 a, 2 b, 2 c, 2 d, 3 a, 3 b, 3 c,
3 d, 4, 2, 1, 3}