An event can have any number of roles. These are the roles that volunteers will sign up for. Those roles can be restricted to certain volunteers and/or groups. When you create the volunteer role, you can make it public, available to all users, or restricted. If the role is restricted, the user must be in an associated group before they can see the role.
You can even setup email addresses to be notified when someone signs up for the role. Roles are best maintained by assigning them to groups. So create a group and assign whatever roles they should have available. Then just add your users or volunteers to that group. For volunteer registration forms, you can create a custom form that (when submitted) will automatically add the user to a specific group. We encourage you to use groups because they can really make you life easier -especially when dealing with a large volunteer base.