Make user’s name display as the site name in comments if it matches certain roles

You seem already to have an idea about how to use filters, so I won’t provide an example here. Expanding on David Lee’s answer, you can probably use get_avatar and get_comment_author_link filters for the main purpose you describe, and in your function or functions test whether the commenter is a registered user with the right accounts levels.

get_avatar makes the latter part easy, since it returns commenter ID or email. The linked get_avatar Codex entry provides a good example for getting you started. You could also just try out the filters, and see if they produce the expected results: If your simple get_avatar filter function replaces the avatar, then you’ll know your theme is using get_avatar, and you can proceed from there. Ditto for get_comment_author_link.

Otherwise, unless you’re going to replace your theme’s commenting system entirely, there won’t be a universal solution, because comment templates do differ: Just replacing the avatar with a different image using the get_avatar filter might work in 90%+ of WordPress themes, but fail in yours.

If it fails, there are a lot of tutorials and examples around for customizing comments. One way to proceed, and get an idea as to how far you’re going to have to go if you encounter difficulties, would be first to check your theme’s (or its parent theme’s) comments.php template file, and make sure it’s using wp_list_comments(), and, if so, how (especially whether it uses a ‘walker’ argument). It’s even possible that you’re already using a plugin that hijacks the standard comment form and replaces it with one of its own. In either case, however, you still might be able to use the various standard comment filters, since many custom commenting systems will still employ standard functions.