The client is asking us to detect in a visual way, if a component is publishable or not, i.e. we train them to only publish components when they are linked with a dynamic component template. Does a GUI extension exists for that?
Yes, the mechanism does exist and it's called Data Extenders. By using them you can include additional columns in the CME list views (among other things). Just have in mind that they do have an impact on performance.
In general, publishing a component is a request to Tridion to update it everywhere. Items embedded statically get rendered into pages (if already published). Dynamic content will be published separately. Dynamic assembly is a combination of the above, depending on what you choose to publish. If a component is published as a DCP, SDL already has fancy globe icon on the top left. We already have the "Where Used" functionality within SDL to show the how and where the items are being used and published to.
To your question, there are no GUI extensions available in the community that you can use readily. You can use data extenders, as recommended above, but you will pay a price with performance. You can also build and extend the Where Used functionality, with your new GUI extension. You can also write some resolver or event system code to throw a WARNING when they publish a static component but it may be misleading to the publisher. I do however believe that you can simply train your publishers to re-organize your content in the CME, if possible.