You can use
defaults to not only change these values, but also to list them.
defaults read -g show "global" options, while
defaults read com.company.ProgramName show the defaults (i.e. configuration options) for a particular program. In this context,
com.company.ProgramName is the bundle identifier of the program, e.g.
com.culturedcode.Things. More on this.
For example, run
defaults read com.apple.Finder and you will find a line that says
AppleShowAllFiles = FALSE or something similar. Now be adventurous and run
defaults write com.apple.Finder AppleShowAllFiles -boolean TRUE and restart Finder to see what happens.
For more information how to use
man defaults to view its documentation. It can become quite complex, and some things related to lists and dictionaries are pretty much impossible to do. Once you get that far, look up
/usr/libexec/PlistBuddy -- there are some examples how to use it on this site, just use the search function.
Find out a particular program's bundle identifier:
To find out what your application uses for com.vendor.yourapp, right-click the application bundle, select Show Package Contents, navigate to Contents, open Info.plist using a text editor, or better a property list editor like Property List Editor or Xcode 4 (both part of Apple's developer tools) and look for CFBundleIdentifier or the like.
Another tool you can use is
strings. It will display all strings (i.e. possibly useful sequences of characters) in a binary file. Note that this yields tons of false positives, since Objective-C function calls are also shown, as well as regular output that is shown on the UI.
Secrets also offers a database of hidden settings for OS X, sorted by application. These can be changed by using
defaults. For your convenience, you can also download a Preference Pane from the website, which allows you to change these over your System Preferences.