Hola, mira tu codigo tiene varios problemas:
1- El while no realiza nada en concreto, ya que quieres realizar un bucle pero no es nesesario utilizarlo para este tipo de ejercicios, por el contrario te recomiendo usar if y elseif.
2- la funcion actualizarPantalla y actualizarPantalla2 se encuentran dentro del ciclo if en donde para realizar el ejercicio tienen que crear las funciones, en lugar de eso te recomiendo en vez de crear las funciones dentro de los if diseñalos aparte y utiliza el if para llamarlos asi: actualizarPantalla() .
Tambien me fije que dichas funciones realizan exactamente la misma funcion solo que una tiene como objetivo restar x cuando este sea igual a 600, es mas estetico y evitas menos problemas creando una sola funcion actualizarPantalla en donde contenga los diferentes if y realize la misma funcion.
3- la variable x2 no hace nada en concreto ya que si quitamos el bucle while y la funcion actualizarPantalla2 no se muestra en ningun lado. por lo contrario te recomiendo crear una nueva variable la cual nos muestre el sentido y la direccion en la cual se mueve nuestro circulo, en este caso la llame direccion y se podria decir que es un termino buleano en donde muestra solo dos valores 1** y **-1.
4- la ultima correcion seria las condiciones de los dos if en donde establecemos que (x < 0) y (x>600) cambie la variable direccion dependiendo de la esquina en donde se encuentre nuestro circulo y al final para que nuestro circulo se mueva en la direccion correcta sumamos x** con el valor de **direccion.
Tu codigo se veria asi:
var x = 0;
var direccion = 1
function actualizarPantalla() {
limpiarPantalla();
if (x > 600){
direccion = -1
}
if (x < 0){
direccion = 1
}
dibujarCirculo(x,20,10);
x+= direccion;
}
setInterval(actualizarPantalla,500);