Way to automatically resize 2 windows to take up half of the screen
Unity has this built in by default.
You can Ctrl + Alt + a keypad key to arrange the window. It's fairly logical if you have a keypad!
Ctrl + Superkey + Arrow
A example of a superkey is the windows/start key. I am using Ubuntu 12.10.
Aside from the Grid plugin, which is very buggy on my system, there are these alternatives for simple tiling:
X-tile: This is a Gnome panel applet that when right clicked will allow you to select an array of options to tile all windows on a particular viewport/workspace. It also has a stand-alone window when left-clicked with lots of options. X-tile has recently been fixed to be compatible with Compiz viewports, but be warned that the display size options may need to be tweaked if you use an unconventional desktop layout, such as AWN dock, auto-hide panels, etc. Don't worry, it's all done through a simple GUI interface.
You can find it here: http://linux-apps.com/content/show.php/X+Tile?content=99624
PYwo: Python window organizer. This little program runs in the background and seems much lighter than Grid. It also is more feature-rich, even with the default settings. Although very simple in scope, there is no GUI.
You can find it here: http://code.google.com/p/pywo/
Easystroke: This is system-wide mouse gesture program for the Ubuntu desktop. And it is awesome. Once you set your keyboard shortcuts you can use this program to assign simple mouse gestures to them. For example, if Ctrl+Alt+L is your shortcut to tile a single window to left-top of the screen, you can make an Easystroke rule that when you hold the right mouse button and draw a line up and left the selected window gets tiled as if you hit the keys. This program also offers application specific gestures, allowing you to set commands for web browsers, file managers, and so on. It comes with an easy to use gui and is available in the official repositories.
Enter this in a terminal:
sudo apt-get install easystroke