A driver is a Python expression that is used to control the value of some field, generally depending on some external variable. They're generally limited to one line, but can actually span many.
Drivers can use properties, numbers, transformations, and scripts, to control the values of properties.
Using a F-Curve, the driver reads the value of the Driver Value and sets the value of the selected property it was added to.
From the Manual entry: drivers
F-curves are just an easier way to animate a property overtime, by manipulating the handles that define a function that maps time to some value. Then, Blender interpolates for the values between the handles.
The idea is simple: you define a few Key Frames, which are multiple frames apart. Between these keyframes, the properties’ values are computed (interpolated) by Blender and filled in. Thus, the animators’ workload is significantly reduced.
From the Manual entry: f-curves