Mas veja, que foi definido no ::after:
width: 2em;
height: 2em;
Para calcular o em devemos levar em consideração a definição do font-size no elemento pai.
Por exemplo:
.minha-div {
font-size: 20px;
}
<div class="minha-div"></div>
Veja que o font-size da minha-div foi definido em 20px, agora:
.meu-filhos {
height: 3em;
width: 2em;
}
<div class="minha-div">
<span class="meu-filho"></span>
</div>
Qual será o tamanho de height e width? Bom, para cada 1em devemos multiplicar pelo font-size do pai, logo temos:
/* elemento pai */
.minha-div {
font-size: 20px;
}
/* elemento filho*/
.meu-filhos {
height: 3em; /* 3 * 20 = 60px */
width: 2em; /* 2 * 20 = 40px */
}
Dessa maneira que está sendo feito no exemplo. Depois, está dizendo que ele deve ocupar metade da largura e metade da altura:
background-size: 50% 50%;
Ou seja, se seu elemento pai possuí font-size igual á 16px, seu elemento terá: 32x32 (2em * 16).
E como estamos dizendo para o background ocupar metade de altura e largura, ele terá o tamanho de 16x16.
Espero ter ajudado.