Deixe-me explicar alguns casos de uso de checkout com arquivo, pasta e branches para que possa ser útil no entendimento.
Digamos que temos uma pasta chamada deve index.htmltambém Tudo é rastreado e o diretório de trabalho está limpo.
Se eu acidentalmente mudar o nome do arquivo index.htmle quiser desfazê-lo, simplesmente irei usá- git checkout index.htmllo para recuperar o estado do arquivo do repositório atualmente selecionado.
Agora se eu fiz alguma alteração na devpasta e quero recuperar isso. Eu posso usar, git checkout devmas e se já houver um branch nomeado em devvez de fazer check-out dessa pasta, ele puxará para baixo esse branch. Para evitar isso, prefiro fazer git checkout -- dev.
Agora aqui o traço duplo vazio representa o branch atual e pede ao git a pasta devdo branch atualmente selecionado.
Da mesma forma, se eu fizer git checkout alpha devisso, puxarei a pasta dev da ramificação alfa.
Esta resposta é para sua primeira pergunta 'git checkout realmente significa'.