Yes, there is a difference. It’s not an obvious difference, but it’s a difference. Both elements look the same, so what’s that so-called difference? The difference comes in when search engines see the page.

<strong> elements appear no different to the search engine’s crawler that any normal text. It is purely visual.

<b> elements appear different, more emphasized, to users as well as search engine crawlers.

This difference can therefore be used to make certain text only bold for the reader and different text bold for both the reader and search engines.

The same goes for the <em> and the <i> elements. <i> is like <b> in that it is emphasized for both the reader and the crawler.

<em> is like <strong> in that the difference is purely visual and the text appears no different to search engine crawlers.

As you can see, there is a significant difference between the elements. Not visually, no, but quite a big difference in how your search engines see the page and thus the ranking of your page in search engines.

Use <strong> when you just want text to be emphasized to the user. The same goes for <em> elements.

Use <b> elements when you want text to appear differently, emphasized, to the search engine as well as the user.

Personally, and I might be completely wrong - correct me if I am, the aren’t many reasons to use <strong> or <em>, as they will not be emphasized to search engines, but the functionality is there.