Listed from roughly lowest learning curve to highest
There are two main ways I've seen this done.
1) Use a table or a grid in the background and draw on top of it
2) Upload a picture of the map, add players, and cover parts of the map you don't want revealed*
- Can count distance for you for moving character
- Can add auras around characters
- Different boarders for different tokens
- Can auto-resize tokens
- Very hard (impossible?) to have non-square tokens (and therefore non-rectangular objects as well) on the map
- NO documentation
- Lots of really nice features (fog-of-war, dynamic lighting, built in dice roller, macros, etc)
- Well documented
- Not all the features may be available for free
- Some of the nice features may not be as helpful for PBP (as opposed to live, online gameplay)
*If you're running a module or AP, this is my favorite choice. Once you extract a map without all the secret doors and such in it (which admittedly, can be a bit tricky), it requires very little work. You basically just have to cover parts of the map you don't want revealed yet. You also get all that built in art and textures of the map, although admittedly, it can be rather pixelated depending on the resolution of the image.
Rolling Ability Score Statistics:
Below is the average point buy value of different rolling methods I've seen online. The average was taken after 100,000 trials, and the standard deviation was between 9 and 11 (generally 10) for each one.