Как правильно делать маршруты в Laravel 8 конкретных страниц из Базы данных?
Ну, в целом всё выглядит верным, если хочется именно так сделать.

По мелочи:

Вы в роуте указываете байндинг модели, но не используете его в контроллере.
Оба метода можно объединить в один, сделав 'home-page' дефолтным значением. Редиректить можно тогда, когда запрос пришёл явно на /home-page, а кода будет меньше.
В запросе with() имеет смысл указывать когда речь про коллекцию, для одного элемента разницы не будет. Собственно, у вас из-за задвоения кода в одном методе жадная загрузка указана, а в другом нет и всё работает тем не менее.
$data->increment('views'), если хотите, чтобы у вас правильно статистика считалась.
Почему у вас объект модели Page сохраняется в переменную с неинформативным названием $data?

Данная реализация от страницы постов вообще ничем не отличается. Тот же метод show ресурса Page. Правильно делать так.

Route::get('/pages/{page:slug}', 'PageController@show')->name('pages.show');

public function show(Page $page)
{
    $page->increment('views');

    return view('page.show', compact('page'));
}

А как делать конкретные страницы по типу site.ru/about/, не говорят.
Такие страницы не сохраняют в бд, если не из админки.
Route::view('about', 'page.about')->name('about');
И в шаблоне все ручками.