И почему всё выводится без задержки?
((i) => { return console.log( i ); })(i)
самовызывающаяся функция, которая выполняется сразу. сделайте вместо нее ()=>{ return console.log( i ); }
for (let i=1; i<=5; i++) {
setTimeout( () => {
return console.log( i );
}, 1000 );
}