While holding alt, if you left click a window, you can move it around, regardless of where you click on the window.
While holding alt, if you right click a window, you can resize it. It helps to be near a corner, but it's much easier than trying to get the pixel-perfect corner.
Any text that you've highlighted can be pasted by middle-clicking (pressing in the scroll wheel). This works across applications too, so you don't need to explicitly copy/paste.
alt + tab will cycle through windows on the current workspace.
Defining a shortcut for switching workspaces can make it very easy to organize your work. For example, one workspace could have all your code, whereas the next has your output. You can rapidly switch between the two as necessary.
Browser
ctrl-F: find on page
ctrl-L: jump to address bar
ctrl-T: new tab
ctrl-W: close tab
ctrl-shift-T: reopen recently closed tab
ctrl-tab: cycle forward through tabs
ctrl-shift-tab: cycle backwards through tabs
tab: cycle through form fields
shift+tab: cycle backwards through form fields
Shell Navigation
ctrl-L: clear the terminal, same as typing 'clear'
ctrl-R: search backwards through your history for previous commands. Press ctrl-R again to keep searching backwards.
ctrl-C: send interrupt signal (default terminate process)
ctrl-Z: suspend, use 'bg' or 'fg' to background or foreground it. 'jobs' to list.
ctrl-D: send end-of-file (EOF) to the input stream (typically exit command-line app)
ctrl-A, ctrl-E: move to beginning, end of line (the home and end keys do the same)
shift + page up / down: scroll the window up or down one full page at a time.
cd (with no argument): go to home directory
cd -: go to previous directory
In a file path, '~' represents your home dir, and ~username represents someone else's home dir.
Tab completion is your best friend!
Command Line Utilities
ps aux: show all processes on the system
kill / pkill / killall: terminate a process by PID / name / all by name
top: show cpu usage
finger name: lookup user/person names
less: pager for text files
wc: count characters, words, and lines in a file (wc -l for just lines)
tail -f: watch a file that's being written in real time
history: show the recent commands you've executed.
!number: re-execute a command from history.
grep: search for text (grep -i to ignore case)
Combining Terminal Commands
You can send the output of one program to the input of another with a pipe (|) character. This is useful for doing things like filtering output (e.g. by piping to grep) or paginating it (e.g., by piping to less).
You can use a file to replace typing input by redirecting the "standard in" stream: ./program < input_filename
You can save output to a file by redirecting the "standard out" stream: ./program > output_filename
Editors
Some very basic functionality will serve you very well. In particular, you should know how to jump directly to a line number, since most errors are reported that way. In vim, you can type :number. In Atom, use ctrl-G.
Editors can also do fancy things like re-indenting messy code or auto-wrapping to 80 characters. Once you've settled on an editor, learn how to do these things!