a cosa serve dichiararla qua?
Si tratta del prototipo della funzione; in sostanza, dici al compilatore che in seguito definirai una funzione con quel nome, che accetta quei parametri e che ha quel valore di ritorno; questo consente al compilatore di effettuare controlli di sintassi anche senza avere in mano la funzione vera e propria. In questo caso avrei potuto anche evitare il prototipo e semplicemente spostare il corpo della funzione prima del main, ma è buona abitudine, specie nei progetti più grandi, dove i prototipi stanno in file separati (header), dichiarare sempre all'inizio le funzioni prima di definirle.