Here's all the basics in one big post.
Tools:
IDA - A very good disassembler that handles Windows system files very well.
HxD - The hex editor I use. It doesn't matter which one you use, but you will need one.
PEMaker - Used for other general tasks, like adding imports and exports.
PETool - Another program made for general PE file editing. There's a few features in PETool that aren't done in any other program very well or at all.
Beyond Compare - For comparing lists of functions. I use Beyond Compare, but you can use whatever you prefer.
CFF Explorer - For editing the file header.
Here is an IDA window. The main area is the code you're looking at. In the file, the code is stored as opcodes, which you can look at in a hex editor or the Hex View in IDA.
Changing a relative address:
A relative address is one where the difference between the current location and the location referred to is stored.
Example: At 77E16D22h, this instruction calls the function at 77E1580Eh. The data stored is the difference between 77E16D22h and 77E1580Eh, which is FFFFEAE7h.
The data is stored backwards in the file, so a difference of FFFFEAE7h would be stored as E7 EA FF FF.
If the location you want to make a function refer to already has a marker (example: loc_77E16D2B), then IDA can do everything for you. To do this, right click the address you want to change, and choose "Manual" in the drop-down menu. In the text field that says "Operand", change this to the address you want the instruction to refer to. This only works if another instruction refers to the address. If it doesn't, you will need to change the hex values directly. You can do this by going to the "Hex View" in IDA and pressing F2, then typing in hex values. Press F2 again to revert back to it's normal state.
Other general info: When writing hex values in text, like a post on MSFN, just writing the value may be confusing, so either add "0x" to the beginning or "h" to the end.
Changing an absolute address:
Changing an absolute address is pretty simple. Just change the hex values in the instruction from the old address to the new one. Remember that these addresses are stored backwards in the file.
This is all the info I know that could be very difficult to find noob-friendly info for. I ended up having my dad teach me this stuff, since he is familiar with IDA and uses it. Experimentation is the best way to learn this kind of stuff, so try stuff and see what happens.