From the calculated data expressions page, we know the syntax of this has to be:
IF(condition, trueExpression, falseExpression)
https://experienceleague.adobe.com/en/docs/workfront/using/reporting/reports/calculated-custom-data/calculated-data-expressions
Based on your expression above, as soon as you said
IF({user}.{roleID}!="6329c33e0012e1aba580831dd37ff97d",{user}.{name}
The part before the comma was your condition and your true expression comes immediately after the comma. So you basically are saying "if my user isn't a designer, then tell me what their name is".
In cases where you want your user to be none of three things, you have to stack a statement that says, "if my user isn't a designer, then if my user isn't a copywriter, then if my user isn't an art director, then tell me what their name is".
So you're more looking to build a statement similar to:
valueexpression=
IF({user}.{roleID}!="6329c33e0012e1aba580831dd37ff97d",
IF({user}.{roleID}!="632ccd5c00311f932f7100d7e0939e61",
IF({user}.{roleID}!="632cc9e1003057125fe8730524c07da5",{user}.{name},"")))
I haven't tested the above, so I don't know if it will work, but this will be similar to what you're looking for. The part before the first comma is still your condition. The part after the first comma is still your true expression but it now contains another IF statement, which means your true expression is made of a condition and a true expression -- and the final true expression is your third IF statement.
The user name can only be considered, if the first two if statements have been successfully passed (it's not one of your first two roles) -- after they have been passed, you can finally filter out the third role.
Hope that makes sense.