Allgemein bewirkt das Einbinden einer Headerdatei, dass dem Compiler die darin deklarierten Variablen und Funktionen bekanntgemacht werden.
Die Funktion sqrt, die du in deinem Programm benutzt, ist in math.h deklariert.
Das Programm lässt sich auch ohne diese Deklaration compilieren und ausführen, aber der Compiler geht in diesem Fall davon aus, dass sqrt keine Parameter hat und int zurückgibt. Tatsächlich gibt sqrt aber double zurück, und der ist bei dir wohl größer als int. Dadurch geht ein Teil des Rückgabewertes verloren, und es kommt zu falschen Werten.
Aber wie gesagt, der Compiler sollte dabei eigentlich eine Warnung ausspucken. Und du tust gut daran, Warnungen nicht zu ignorieren.
Nenn mal ein Beispiel.