Why does the impulse response determine the transfer function of a system?
Because every signal can be decomposed into a linear series of scaled impulses that are shifted in time. Thus applying a linear time-invariant system on each impulse in the series and then summing the results again will give the same result as applying it on the whole signal. Therefore, one only needs to know how the system responds to an impulse to be able to calculate its response to an arbitrary signal and all properties of the system.
This DSP guide chapter has some nice illustrations on the subject.
This DSP guide chapter (only in PDF) shows how from the impulse response as written in the form of a difference equation the transfer function can be derived using the z-transform. For FIR filters the $b_i$ coefficients will be zero in equation 33-2.