Oi, Julia.
A tag, em si, é só um apelido para um determinado commit no seu repositório. Os commits criam um ponto na linha do tempo do seu projeto. Iniciamos somente com o index.html e fizemos o commit para criar um ponto na nossa linha do tempo. Depois adicionamos o style.css e damos outro commit para marcar outro ponto. Assim a gente consegue saber o que aconteceu em cada momento no projeto, correto?
Digamos que agora que temos o style.css decidimos que temos o suficiente para entregar uma versão inicial do projeto. A gente poderia copiar os 2 arquivos para o cliente e entregar. Mas como a gente pode saber, futuramente, em qual ponto foi que terminamos aquela primeira versão? Temos vários commits e não temos como ter certeza. Podemos criar um apelido para aquele commit que originou a primeira versão. A tag vai ser um identificador, um rótulo ( que é a tradução direta de tag), para esse commit.
Dito isso, acho que essa analogia com o ponto de restauração do windows faz sentido. Tinhamos nossa máquina num estado. Instalamos um programa e queremos ter um ponto para que possamos voltar para o estado em que o computador estava depois dessa instalação.
Espero ter deixado mais claro. Se tiver continuado com dúvidas, é só dizer.