That trigger only applies to frontend profile changes. If you're testing this in backend it'll appear to not work. For backend you'd need to also add the onAfterUpdateUser trigger to the auto action.
Name fields are also tricky. firstname, middlename, and lastname are merged together to form the name field. The name field is stored to Joomla _users. The firstname, middlename, and lastname are stored to _comprofiler. None of this join/split behavior is happening since you're doing a direct save, but if you don't you'd get stuck in a loop since non-direct saves will fire that trigger. Best I can suggest is you'll have to handle the entire behavior chain your self using a Query action and directly modifying the database instead. Example as follows.
Code:
UPDATE `#__comprofiler` SET `firstname` = '[cb_role]', `lastname` = '[cb_pseudonym]' WHERE `id` = '[user_id]';
UPDATE `#__users` SET `name` = '[cb_role] [cb_pseudonym]' WHERE `id` = '[user_id]';
Is there a reason you're copying those fields to the name fields? You can override a fields output using the Layout parameters to avoid having to handle double storage. To do this edit the firstname field then under Parameters > Layouts set "Profile Value Layout" to [cb:userfield field="cb_role" /] then edit lastname and set "Profile Value Layout" to [cb:userfield field="cb_pseudonym" /].