My tasks don't seem to be running as a background process
You are right about the Tasks running in the background. If the Task is just sending a few mails, it might be done before your site is loaded, thus creating this impression. 

Check:


Change the Batch Size of the Mailer plugin to 1 and the waiting time to 120 seconds.
Change the $user_criteria to fetch 2 users.
Run your controller


It should now take about 2 minutes for the Task to finish, if your site loads faster it was just an impression.



Code:

You should however separate your code a bit more, because right now you are mixing Controllers and Services.

Your Service shouldn't output anything, it should just return a value, (e.g. boolen), and your Controller should then output the message:

Service {
    //Create Task etc...

    if ($itWorked == true) {
       return true;
    }
    else {
       return false;
    }
}

/* ------------------------ */

Controller {
    if ( FunctionService() ) {
       echo 'It worked';
    }
    else {
       echo 'Something went wrong';
    }
}


Also the "Make sure we kick the task off"-part, should go into your Service.

P.S. I see you are using my plugin :), if you need any help, create an issue over on github.