Drivers are actually not much different to using keyframes. As you know, keyframes allow you to specify the value of some property at specific frames of the animation and blender fills in the values on the inbetween frames by a method of interpolation. Drivers effectively do the same job but rather than specifying specific fixed points along the animation (as you do with keyframes) you, instead, define the rules for how that property varies. This allows you to do much more than you could do with keyframes such as make one property directly dependent on another. For example, you could vary the scale of one object based on how close another object is to it - simply by defining the rule (eg, scale = distance / 10). You can also add modifiers to the driver output - for example, you could use the frame number as the basis of a driver and apply a sine wave to it to vary some property over time - very useful for getting something to pulsate, which would be extremely cumbersome via keyframes alone.
To create your first driver simply start a new blend file (with the default cube), click into the X location property field of the cube and enter #frame (the # is a shortcut for creating a driver and 'frame' is simply a reference to the current frame number). If you now step through the frames you should see the cube shoot off along the x-axis. (If you don't then you probably got a warning at the top of the screen that "auto-run" is disabled - this is a safeguard to prevent scripts being run when you don't want them to - go into File/User Preferences and select the File tab and enable the Auto Run Python Scripts checkbox to enable scripts)
Once you have created the driver you can configure it via the Graph Editor window by changing the 'Content' in the toolbar (at the bottom of the graph editor window) from 'F-curves' to 'Drivers'. Press N to see the properties panel and details of the driver are shown. The driver has a 'value' shown in the Drivers panel and you'll see that vary as you change the frame. An f-curve is applied to that value to allow you to more easily vary how it affects the actual property. If you scroll down to the Modifiers panel you can add a Built-in Function - try a Sine wave to get your cube oscillating.
Of course, this doesn't directly address your original problem. However, once you've got a grasp of drivers you can hopefully apply that knowledge to manipulate the any other properties (such as visibility) as you require.
EDIT : I believe I've managed to achieve what you're after as follows :
- Start a new blend file.
- Select the default cube.
- Right-click on the Restrict View icon in the outliner and select 'Add Driver'
- Add a new object to the scene - this will be the 'controller' object and will be used to hold the properties you'll manipulate later.
- On its Object settings, add a Custom Property.
- Edit the property and set its value to 'True' and its name to 'CubeVisibility'.
- Select the cube.
- Open a Graph Editor window.
- Change the mode to 'Drivers'
- Select the driver on the cube.
- Open the Properties panel by pressing 'N'.
- Scroll down to Variables - there should already be one named 'var'. Change it to 'Single Property' (leave the name as 'var').
- Set the object field to the 'controller' object you created earlier (you can use the dropper to select it from the 3D view)
- Set the Path to '["CubeVisibility"] (the custom property you created earlier)
- Scroll up to the Drivers section and ensure it's set to 'Scripted Expression' and Expr set to 'var' (as an alternative, use Average Value in place ofScripted Expression and then you don't need the Autorun Python Scripts property enable in the user preferences)
That should be it. Now go back to the 3D scene and select the 'controller' object and scroll down to its Custom Properties. Changing CubeVisibility between 1 and 0 (True and False) should cause the Cube to show and hide.
To apply the same to multiple objects, right-click the Restrict View icon of the cube in the outliner and select 'Copy Driver'. Right-click on another object's Restrict View icon and select Paste Driver and the driver will be replicated on the other object. If it doesn't work immediately you might need to select the driver in the Graph Editor and click 'Update Dependencies' for it to pick up the changes - although saving the blend file and re-opening it should also update all drivers automatically.
Hope this helps.