Отличный вопрос, так как нужно разобраться с тем в какую категорию входит тег и какой контент он ожидает. И с ссылками не всё так просто.
Категория: если посмотреть в спецификацию, то
<a>
входит в категорию потока, фраз, ощутимых элементов. Каждый элемент имеет категории, которые используются при определении контентной модели.
Контентная модель: прозрачная. И вот тут самый интересный момент, потому что чаще всего элемент ждёт такие же стандартные категории как поток или фраза, а что значит прозрачный не совсем понятно. Если коротко, то прозрачная - зависит от контентной модели родителя. Какой родитель у ссылки такая контентная модель у ссылки.
То есть на ваш вопрос "будет ли правильно обернуть заголовок h3 в ссылку" ответить нельзя пока мы не узнаем какой родитель у ссылки.
Вот так нельзя
<span>
<a href="">
<h3>Заголовок</h3>
</a>
</span>
А вот так уже можно
<div>
<a href="">
<h3>Заголовок</h3>
</a>
</div>
По поводу "или же лучше ссылку обернуть в заголовок" - можно
<h3>
<a href="">Заголовок</a>
</h3>
Если у вас ещё проблемы с вкладыванием элементов, то лучше спеки не найти -
https://html.spec.whatwg.org/multipage/text-level-...
Смотрите на:
1. интерсующий элемент: span, div, button, a
2. его категорию: flow, phrasing
3. его контентную модель: flow, phrasing
Категория - отвечает за тип элемента. Контентная модель - что можно вставить в элемент.