Não sei se ficou muito confuso, mas fiz uma lógica um pouco mais curta usando array com as cores...
<meta charset="UTF-8">
<canvas width="600" height="400"></canvas>
<script>
let tela = document.querySelector('canvas');
let pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgrey';
pincel.fillRect(0, 0, 600, 400);
let posXCentral = 300;
let posYCentral = 200;
let cores = ["orange", "yellow", "red", "black", "blue"];
/* Cores vs circulos:
1
0 2 3
4
*/
let deslocamento = -20;
let indCirculos = 0;
while (indCirculos < 5) {
criaCirculos(deslocamento);
deslocamento = deslocamento +20;
}
function criaCirculos(deslocamento){
if (deslocamento == 0){
desenhaProximoCirculo(posXCentral, posYCentral); //Sem deslocamento = só circulo do meio
}else{
desenhaProximoCirculo(posXCentral + deslocamento, posYCentral);
desenhaProximoCirculo(posXCentral, posYCentral + deslocamento);
}
}
function desenhaProximoCirculo(x, y){
pincel.fillStyle = cores[indCirculos];
pincel.beginPath();
pincel.arc(x, y, 10, 0, 6.28);
pincel.fill();
indCirculos++;
}
</script>