Sua pergunta
O que o gcc -o sample sample.c realmente faz
O comando que você colou aciona gcc para compilar sample.c .
Como resultado, você obterá uma saída / executável com o mesmo sample .
Os parâmetros (como -o no seu exemplo que definiu o nome do arquivo de saída) são explicados na página man do gcc.
Você pode abri-lo executando man gcc
Estou citando a seção -o da página man aqui
Em geral
A Wikipedia explica uma boa quantidade de gcc aqui .
Estou citando apenas o começo - mas o artigo completo vale uma leitura e oferece muitos links e referências adicionais
% bl0ck_qu0te%