A keyboard big enough to have all the possible letters and symbols you would need to type when coding or even writing an email would need to be huge. You'd need a key for every letter, lower case and upper case, including the letters less common in English like é or æ, every symbol like , and ; and "", and other useful keys like return and backspace. Back in the day we figured out that this was going to be a bit absurd and different systems developed different ways to allow you to type all these things without a board with 200+ keys. While these systems differed, they converged on some similar concepts.

In order to type more symbols with less keys, we started making use of modifier keys. Using one or more modifier keys in concert with other existing keys, you get many more letters and symbols than you get on your keyboard directly. You can also use them to send other useful commands to your computer like "undo" and "jump to the end of this line".

Shift

Probably the most commonly used modifier key is shift. For letters, this allows you to type an "a" and a "A" with the same key. Pressing shift at the same time as the "a" key modifies the command and the computer displays an "A". This is also useful for symbols. Most labeled keyboards show two symbols, one (like ";") is the key you produce when you press that key by itself, the other (like ":") you get when you press that key using shift as a modifier key. You can also use shift to modify other modifier keys to allow for 3 and 4-key combinations; usually reserved for commands.

Alt

Alt's (aka Option) exact use depends on your operating system and settings. Generally you use it in combination with letters to produce symbols like æ. In macOS this is less necessary since you can hold down keys like "e" and see a list of choices including ë and è. On Linux and Windows systems, typing these letters will require figuring out which keys in combination with alt you should press. Windows systems also use alt in combination with keys such as F4 to close an app's window. In macOS it also modifies the behavior of menu items and shortcuts in many apps. For example, in Safari, holding alt changes the "Close Tab" menu item to "Close Other Tabs". Alt will also turn the keyboard shortcut for "Close window" into "Close All Windows".

Control

Control is mostly used for commands and less for typing letters and symbols. In Windows, popular application-specific shortcuts like cut, copy, paste, and undo are all the control key combined with a letter (conveniently across the bottom row of a standard qwerty keyboard). In macOS, you use control to send Emacs (an old text editor) style shortcuts to text areas like "delete everything on this line" or "move to the beginning of this paragraph". It is also used with the macOS command line to send commands like "put this program into the background" and "kill this program". In Linux systems, it depends on your window manager largely, but similar terminal shortcuts work there too.

Windows/Command

The Windows command key is not very exciting in Windows, used all the time in macOS, and potentially useful in Linux systems. In Windows, this key opens the Windows application menu. This can be so annoying for people playing full-screen games who accidentally press it that some keyboards have a "Windows lock" feature to disable the button while you're in games. It also works with other OS-level shortcuts such as Windows + "d" to show the desktop. In macOS, however, the command key plays the same kind of roll control does in Windows. Print is Command combined with P, undo is command combined with Z, and so on. Command can also work with shift, control, or alt to do even more things. For example, command and "w" will close a window, but add alt and it will close all windows. Command used as the only modifier tends to send commands that act on the active app like "print", but when combined with the other modifier keys, it tends to create global shortcuts like using command, shift, and "q" to logout of the system.

Popular productivity apps such as Omnifocus and Fantastical have special input windows which are assignable to global key combinations. In Fantastical, for example, you can set a key to call up their natural-language event input to quickly add an event to your calendar without switching apps and losing where you were in your work. You couldn't map this to something simple like command and "f" because that's already the command for "find" in most apps. Adding shift might not even be enough, so on mine it is a combination of control, shift, command, and alt combined with "f". Use of all four modifier keys at once makes a sort of meta-modifier key known as "hyper". Since I have a fancy programmable keyboard, I can easily make a single key on my keyboard send this Hyper key, so launching Fantastical's input window requires pressing two keys on my keyboard. Hooray efficiency! Hooray productivity! For those of you without a programmable keyboard, you can accomplish something similar in software, the great Brett Terpstra explains how to do that.

Learning to make use of these modifier keys can help to make you more productive. You'll spend less time reaching over to the mouse and dragging the pointer to a menu item or button when you can simply pound out the key combination that does the same action from memory. People who have burned these combinations and shortcuts into their muscle memory tend to become slower and frustrated when you change their operating system, keyboard, or even system settings. It's the trade-off you make when you spend time learning how to use a tool and all of it's wonderful features.