If the mij are matrices, Flatten[{{m11, m12}, {m21, m22}}, {{1, 3}, {2, 4}}] effectively constructs a single matrix from the "blocks" mij.
Flatten[list, {{i1}, {i2}, ...}] effectively transposes levels in list, putting level ik in list at level k in the result. Note that the function Transpose in effect uses an inverse of this specification.
Flatten flattens out levels in SparseArray objects just as in the corresponding ordinary arrays. »