When using a library that is already compiled, you need to provide the prototypes of the functions in that library to your compiler. A header file is commonly used to do this.. Otherwise, every library would have to be a complete set of source code for you to compile yourself every time you use it.
That would be fine for a very small library. If your library is the Win32 API or some such, it is not fine.