jedi the CSS classes can be reused at will without any issue.
The components have been designed with extensibility in mind so re-using a component should be possible, however you might need to rewrite the logic for fetching data.
For example you can see from the code in DiscussionPage that to re-use the PostStream
you'll need to pass the discussion
model, a stream
which is an instanceof PostStreamState
and an onPositionChange
callback responsible for updating the URL and other aspects of the page.
Each component will have its own specific challenges.
If you are developing something new that works similarly but displays other kind of data, the recommendation is to create your own components. Your own component can be based on a copy-paste of a Flarum component. The benefit of that solution is that you won't be impacted as much if Flarum changes how a component works internally later on.