Difference between Vim's tabstop, softtabstop, and shiftwidth

In the past, I only knew about Vim's tabstop setting, but it no longer appears to be sufficient; there are 3 settings you need to understand:

There is also the expandtab setting, which inserts space characters instead of using tabs.

Now, finally, here is how I use these settings:

set ts=4
set sw=4

This makes tabs 4 spaces large, allows (by default) using actual tab characters (instead of 4 spaces), and ensures that built-in language support inserts a single tab for indentation (instead of 2 tabs, which is what you get with ts=4 and sw set to its default of 8).