E' ovvio. Se il compilatore non sa cosa sia dummy (incontra una sua chiamata nel main PRIMA di conoscerne il codice) assumerà implicitamente che sia una funzione che restituisce un int (primo warning). Ma poi vede che non è così (secondo warning).
Devi dichiarare il prototipo sempre, oppure permettere al compilatore di sapere cosa sia la funzione PRIMA che venga usata. Ovvero, puoi scrivere
void dummy() {
printf(("sono la funzione dummy"));
}
int main()
{
printf("Hello world!\n");
dummy();
return 0;
}