По 1-ому вопросу:
Функция
moveCircles передвигает мувиклипы.
Мувиклипы это
circle1.clip и
circle2.clip.
Можно было бы написать

Код AS3:
function moveCircles () {
for (var i=1; i<=2; i++) {
var circle = this["circle"+i];
circle.clip.x += circle.xmov;
circle.clip.y += circle.ymov;
}
}
Но так писать нельзя. Потому что
x и
y у мувиклипов странно работают. Я не знаю почему, может другие напишут. Но получается примерно такая ситуация.

Код AS3:
movieclip1.x = 10;
movieclip1.x += 0.05;
movieclip1.x += 0.05;
movieclip1.x += 0.05;
movieclip1.x += 0.05;
trace(movieclip1.x); // выведет 10.27 вместо 10.2
Поэтому делают так

Код AS3:
var bla:Number = movieclip1.x;
bla += 0.05;
bla += 0.05;
bla += 0.05;
bla += 0.05;
trace(bla); // выведет 10.2
movieclip1.x = bla;