What do the preferences keyframing options actually mean?
Auto Keyframing:
Enable it and create a new scene, add a cube for example, then move the cube, scroll to a different frame on the timeline, and move the cube again. Keyframes will automatically be created for the transformations (inserts a LocRotScale group if you e.g. use G to translate the object).
You can find the same toggle in the timeline header (icon only, red circle).
Show Auto Keying Warning:
If Auto Keyframing is active, a notice will appear in the upper-right corner of the 3D View during transformations, to inform/remind the user, that new keyframes are going to be added (if one confirms the transformation).
Only Insert Available:
Keyframes will be added to existing F-Curves only, and no new groups are implicitly created for you. So manually keyframe e.g. Location once, then change time and move the object around. Keyframes will be created for its translation, but not for rotation or scale, because rotation and scale don't have keyframes / F-Curves yet.
Visual Keying:
From blender wiki:


  This is to be used with objects or bones that have
  certain constraints that can affect the key values. For example,
  setting a key on an object with a Copy Location constraint would
  normally set the key for it’s unconstrained location. Enabling this
  option causes the key to be set for the constrained location.

Only Insert Needed:


  Will add keys only when needed (i.e. only to F-Curves controlling
  properties that are changing).



For completeness: the documentation on Timeline has more detailed information.