I am fond of drivers, they can be really useful.
By typing #frame into a value the frame number will drive that value. This is a great one for driving things over time. Yo can type things like #frame*.2 to get lower values etc.
As said especially for rigging but you can use drivers for many things. Basically nearly any (not all, for example dimensions in the N tab) value field in Blender can be driven or used as a driver.
For materials I recall this thread where I used node groups, a driver and a custom property (colour) to change the colour and textures of different objects at once. How can I use outputs of nodes for other materials? - #6 by DNorman (there is the file 2 posts bellow)
You could use the sun position to rotate sun flowers.
There are loads of possibilities to imagine with drivers! When you want one value to effect another a driver is you friend.
Once you grasp the concept of drivers they are pretty easy, the tricky bit is finding the right mathematical or python expression to get the values you want to output.
Be sure to check out the driver modifiers in the driver editor tab as they are great, things like add noise and stepped interpretation to giggle and stagger values.