How to apply the multiple composite functions to a list?

For a minimal change in your code, you can replace @ with Composition (@*)

#[ls] & /@ {Max@*Re, Min@*Im} 
 {2, -1}

Consider also Through:

Through @ {Max @* Re, Min @* Im} @ ls
{2, -1}

Aside: Why your code gives {{1, 2}, {1, -1}}:

Trace[#[ls] & /@ {Max@Re, Min@Im}] // Column

enter image description here

Notice that Max@Re is replaced with Re and Min@Im is replaced with Im in the very first step of evaluation.


Map[{Max[Re[#]], Min[Im[#]]} &, ls, {0}]

Gives

{2, -1}

From help on Map

Level 0 corresponds to the whole expression.