list all authors outside of loop with photo from /uploads

A join to get the user role? I don’t think so.

Since you’re into doing your own PHP (from the examples you’ve provided) do more research on the built in functions for what you’re looking to do in the WordPress Codex.

As far as creating new roles the code below copies the Administrator role, removes any capabilities you woudn’t want in your new custom role and lastly names your new role:

$newrole = get_role('administrator'); //choice of Administrator, Editor, Author, 

Contributor, Subscriber - http://codex.wordpress.org/Roles_and_Capabilities

$caps = $newrole->capabilities;

// Unset the capabilities you don’t want in the new role.
//unset($caps['activate_plugins']);
//unset($caps['edit_plugins']);
//unset($caps['update_plugins']);
//unset($caps['delete_plugins']);
//unset($caps['install_plugins']);
//unset($caps['delete_users']);
//unset($caps['import']);
//unset($caps['create_users']);
unset($caps['edit_users']);
unset($caps['edit_dashboard']);
unset($caps['update_core']);
unset($caps['switch_themes']);

// unset($caps['edit_theme_options']);

// Add the new role.
add_role('Master Editor', 'Master Editor', $caps); // your new role "Master Editor"

or add a capability to an existing role.

function add_cap_to_editor() 
        {
            $role = get_role( 'editor' ); // pick up role to edit the editor role   
            $role->add_cap( 'edit_users' );
            $role->add_cap( 'create_users' );
        }
        add_action( 'admin_init', 'add_cap_to_editor');