Olá, Bruno. Tudo bom?
Quando você está aplicando margin: 0 auto;
você está aplicando margin-right: auto;
e margin-left: auto;
e zerando a margem do margin-top
e margin-bottom
. Quando um elemento tem o seu display
como block
e um largura definida, as margens do lado direto e esquerdo com auto fazem um calculo automático para centralizar o elemento.
Se você quiser ver no detalhe como funciona esse esquema de centralizar o elemento, recomendo dar uma olhada no post abaixo que explica com detalhe como funciona:
https://medium.com/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-block-98480c987950
Se após ler o post, ficar qualquer dúvida é só falar :-)