You only need to uncomment one of these blocks, load any page and then comment them again!
/* Capabilities */
// To add the new role, using 'international' as the short name and
// 'International Blogger' as the displayed name in the User list and edit page:
add_role('international', 'International Blogger', array(
'read' => true, // True allows that capability, False specifically removes it.
'edit_posts' => true,
'delete_posts' => true,
'edit_published_posts' => true,
'publish_posts' => true,
'edit_files' => true,
'import' => true,
'upload_files' => true //last in array needs no comma!
// To remove one outright or remove one of the defaults:
It's sometimes handy to add/remove from an existing role rather than removing and re-adding one. Again, you only need to uncomment it, reload a page and then comment it again. This will store the role/capability properly in the options table. (This allows you, the developer to control them and removes the overhead of the bulky plugins that do the same thing.) Here I'm changing the author role to delete their published posts (the default), but allowing them the capability to edit their published posts (which isn't possible for this role by default)-- using *add_cap* or *remove_cap*.
$edit_role = get_role('author');
I keep a spreadsheet with the grid from the Codex page for sites that modify this way, so I can remember how things are set, though leaving the commented out code in your functions.php file will work to. Don't leave these examples uncommented, or it will write to the database with each page load!
The functions I mention above write to a field in the options database. Commenting and uncommenting them is the way to go. There are plugins for user roles, but if you use the functions mention above, you cannot leave these functions running, and you DO NOT need to set them more than once, or set them based on if a specific user is accessing something. If you want that, set that user up with a specific, unique role. And refer to the codex, everything I write above is 100% correct if you do it without a plugin. For nearly every case, you only need to set the user roles once.
@tomcat23: To illustrate, i wrapped it up in a function to only add the role, when it doesn't already exists. Another note: I guess it would be easier to place the role somewhere in the role hierarchy, with retrieving the caps from some built in role and then add/remove the capabilities from the built in role. Would make it more clear and easier to remember if it's caps are placed somewhere between ex. admin and editor. - I hope you don't mind that i edited your answer. If you do, pls role it back. :)
@tomcat23 - Water under the bridge at this point. All I'm saying is, I'm not interested in placing blame, just in having peace for everyone moving forward. :)
@MikeSchinkel Yes, you are right. @kaiser My apologies if I've caused you insult.
@MikeSchinkel: thanks for bringing peace back in. @tomcat23: No, you didn't. I can deal with that sort of criticism. My apologies too.