E' il modo in cui è dichiarata la funzione e serve al compilatore per confrontare se quello che dichiari poi lo sviluppi.
Nel tuo caso il protipo è:
int max (int q ,int w , int e);
e deve essere presente *prima* del codice dove viene invocata la funzione. Se tu avessi messo prima lo sviluppo della funzione - max() - e poi il main(), il compilatore avrebbe saputo subito com'era fatta. Dal momento che - max()- l'hai sviluppata dopo il main(), il compilatore non dispone di questa informazione, quindi da errore. Per evitarlo, basta mettere il prototipo (senza lo sviluppo) prima del main().
Se invece metti il prototipo, ma poi dimentichi lo sviluppo avrai un errore di link.