Olá Alan,
imagino que a confusão ocorreu por conta de haver as mesmas condições( compra.id_compradores = compradores.id_compradores) no INNER JOIN e no WHERE.
Neste caso, não seria necessário o WHERE pois o INNER JOIN também é um filtro, ou seja, o filtro já esta sendo realizado anteriormente no INNER JOIN.
Só seria necessário caso tivéssemos que colocar outro tipo, outra condição, porém, caso você quisesse colocar esta nova condição no INNER JOIN com um 'AND' também poderia, sem problemas.
Um cenário que você pode vim a se preocupar, é quando o JOIN for do tipo LEFT ou RIGHT, neste cenário o WHERE pode trazer resultados indesejados dependendo dos resultados do LEFT JOIN ou RIGHT JOIN.
Uma dica, caso você queira, não é necessário o uso da palavra 'INNER', basta utilizar 'JOIN'.
Espero ter ajudado,
abraços.