Это действительно два вопроса.
Прямо сейчас, то, что вы показали выше как «Hello.cpp», выглядит как заголовок с завершающей защитой. Компилятору на самом деле все равно, какое имя вы дадите заголовку, но включение файла .cpp может сбить с толку (в лучшем случае) любого, кто смотрит на ваш код. Если вы компилируете это самостоятельно, функция include guard (по крайней мере), вероятно, должна пойти - хотя это не вызывает реальной проблемы, в лучшем случае это бессмысленно и запутанно.
Да, функции-члены, которые вы определяете внутри определения класса, неявно встроены. Это не означает, что компилятор должен генерировать для них встроенный код. По сути, это всего лишь подсказка компилятору, и большинство компиляторов сами решают, генерировать ли встроенный код, основываясь в основном на том, что содержит функция, а не на том, где она определена.