Palavra-chave externa C ++ em funções. Por que não incluir apenas o arquivo de cabeçalho?

Se eu entendi direito, isso significa

extern void foo();

que a função foo é declarada em outra unidade de tradução.

1) Por que não apenas #incluir o cabeçalho no qual esta função é declarada?

2) Como o vinculador sabe onde procurar pela função no tempo de vinculação?

edit: Talvez eu deva esclarecer que a declaração acima é seguida usando a função

foo();

Nunca é definido nesta unidade de tradução.

questionAnswers(5)

yourAnswerToTheQuestion