Facebook's Open Graph protocol allows for web developers to turn their websites into Facebook "graph" objects, allowing a certain level of customization over how information is carried over from a non-Facebook website to Facebook when a page is "recommended", "liked", or just generally shared. The information is set via custom META tags on the source page. Let's take a look at the different META tags Facebook uses to allow you to customize how your website is shared.

example:

The image META tag directs Facebook to use the specified image when the page is shared:
<meta property="og:image" content="https://link/image.png"/>

The title to accompany the URL:
<meta property="og:title" content="title"/>

The URL should be the canonical address for the given page:
<meta property="og:url" content="https://link/post"/>

Provides Facebook the name that you would like your website to be recognized by:
<meta property="og:site_name" content="name of website"/>

Provides Facebook the type of website that you would like your website to be categorized by:<meta property="og:type" content="blog"/>

Does anyone use this? Does anyone use any cms like wordpress or joomla? Which plugins do you use?

If you're not using OG tags then you really should. I use WordPress and have Yoast installed along with WPSSO which has many other very worthwhile features for adding OG images for FB, Pinterest & Twitter cards. You can see how it'll likely look when pulled in to social networks.

I'd also like to add that Schema.org and AMP are also incredibly important in the current way of developing. Schema.org is for structured data and gives the search engines context, this is how you'll see your content as rich snippets.

AMP = Accelerated Mobile Pages - another Google initiative which has gained traction in making the mobile web a speedier place to be.