*I'm not a developer but happy to pull our genius in if needed
We have an article tiles component that we're constantly refining - It does a lot, one of which is a carousel. We put it into a custom content component so anyone with custom content privilege's can easily edit it. I've also used custom tags in the past to 'flag' what should show up in said component before, or 'feature article'.
In this example, it's pulling in from the specified "displayNodes" - You can see it in action on our homepage -> https://community.upwork.com/ This is our V1, we're working on an enhanced V2 we're starting to test.
Specific to your point about roles, you could build something such as this, and only (a) allow the applicable roles to see the article tiles themselves, or (b) only allow the applicable role to see the entire component.
<@component id="Custom.Article-Tiles" title="Trending" renderId="clients-carousel" tileClass="up-green-dark" displayAmount="6" styleType="carousel cover" showMoreButton="false" includeStyles="false" start="true" end="true" sortBy="post_time DESC" displayNodes="Blog,ProductUpdates,CommunityAnnouncements" displayArticles="" tileBackground="https://community-static.upwork.com/Assets/others/article-tiles-test.png"/>