A role may be made up of one of more cookbooks whereas cookbook is a single entity made up of recipes.
So roles can be used to simplify run lists.
Instead of providing a run list with all the cookbooks a role can be provided.
{
 run_list : [
    "role[test]"
 ]
}
can be used instead of
{
 run_list : [
    "recipe[test1]",
    "recipe[test2]",
    "recipe[test3]"
 ]
}