É uma política de compartilhamento de recursos entre diferentes origens. Por padrão os navegadores só permitem que você faça requisições XMLHttpRequest ou FetchAPI de mesma origem. Então, por exemplo, se você estiver no domínio "www.whitefog.com" e tentar fazer uma requisição para "www.blackfog.com", sendo que "balckfog" não permite explicitamente requisições feitas pelo domíno do whitefog, o seu navegador vai dar um erro de CORS.
Eis a questão: como blackfog define o que é permitido ou não e como whitefog descobre isso? A resposta é, whitefog faz uma "pre-requisição" a blackfog utilizando o método HTTP OPTIONS. Essa requisição pode ser aprovada ou reprovada por blackfog. Se ela for aprovada o conteúdo vem normal, caso contrário você vai receber um erro de CORS.
É importante ressaltar que isso só e implementado por navegadores. Então, se você utilizar algo como Postman ou um curl da vida, nunca que vai acontecer um erro desses.
Então você pode se perguntar: PARA QUE SERVE ESSA PORRA? Como muitas coisas na internet, isso traz maior segurança aos navegadores. Serve para que uma origem diga se você pode ou não pegar dados dela, evitando que um site que você acesse faça requisições para outra origem sem permissão.
É importante você imaginar que sem o CORS, qualquer site podeira fazer requisições em nome do seu navegador.