With HTML5, you can create custom elements. It is valid and it is legitimate. It is even part of the push behind projects such as the Polymer-Project. So in summary, yes you can use custom elements.
However, as with all good things, there are some caveats. A quick glance at browser support for such custom elements via caniuse.com shows a lack of support in almost all major browsers except Chrome. In fact, the W3C has the Custom Element Spec outlined as a Working Draft (Last Updated: 21 July 2016) so assume there will be changes to come.
If you're still interesting in using custom elements, I'd suggest using something like Polymer. According to their compatibility chart:
The Polymer library is a lightweight sugaring layer on top of the Web Components APIs. Unlike a typical javascript framework, Polymer is designed to leverage features baked into the web platform itself to let you build components. Some features used by Polymer are not (yet) supported natively in all browsers. For broad web components support, Polymer uses the polyfills from webcomponents.org. They're lightweight, work well, and provide the feature support Polymer requires.
the library provides the necessary polyfills to make this functionality work in browsers that have not yet fully implemented the spec so you should be safe to use custom elements despite the relatively low amount of native support.