invece di...
mc = this["clip"+i];

prova così...
mc = "clip"+i;

Per la seconda domanda, dipende da quanto vuoi "distanziare" un'immagine dall'altra...
mettiamo 10 pixel sia in orizzontale che in verticale, per cui avremo...
codice:
ix = 1;
for (i=1; i<=totale; i++) {
     if (i==1){
	loadMovie (_root.eval(this["foto"+i], clip)
     }else {
	duplicateMovieClip (clip, "clip"+i, i);
	mc = "clip"+i;
	loadMovie (_root.eval(this["foto"+i]), mc);
	mc._x += (mc._length+10)*(ix-1);
	mc._y += (mc._height+10)*(ix-1);
     }
     ix++;
     if (ix>4) {ix=1};
}