Funciona assim pq dessa forma não tem como dar errado. Mas se vc levar pra qq outra plataforma (outro pc por exemplo) não vai funcionar, pq esse caminho "só" vai existir na sua máquina.
Pra que funcione vc tem que sempre atentar para onde estão o arquivo html, o arquivo css onde vc chama o background-image e onde está a imagem.
Tomando o caso que a estrutura é assim:
bootstrap-boas-praticas-no-front-end-aula1/ (pasta raiz)
index.html
style.css
img/ [pasta]
castelo.jpg
Você vai chamar a imagem assim dentro do css:
background-image: url(img/castelo.jpg);
Se o style.css não estiver na raiz, estiver dentro de uma pasta por exemplo:
bootstrap-boas-praticas-no-front-end-aula1/ (pasta raiz)
index.html
css/ [pasta]
style.css
img/ [pasta]
castelo.jpg
é necessário voltar uma casa:
background-image: url(../img/castelo.jpg);
Nesse caso ../ faz com que vc saia da pasta [css] e volte para raiz, para em seguida entrar na pasta [img]
Não testei com esse exemplo acima realmente pra ver se funciona certinho, mas essa é a lógica por trás de tudo. Espero ter ajudado.