пришел к выводу, что запросы к API надо делать внутри actions Vuex (якобы это best practices). Однако, я совершенно не понимаю, всегда ли это необходимо
Выносить общение с api слоем в vuex оправдано, когда данные, которые оттуда приходят вы храните в vuex.
При этом, конечно же, лучше при мутации чего-то на сервере обновлять этот список с сервера, а не пробовать повторить эту мутацию локально.
Что касается вашего вопроса про то, что vuex выглядит прослойкой: у него изначально другое предназначение, он не обязан полностью содержать актуальные данные из бд, это слой с данными для приложения и нужен он для того, чтоб все общие данные лежали в одном месте.
PS
1. добавьте в ваши actions, использующие вызовы API return, иначе при вызове в компоненте они будут возвращать не тот промис, который вы от них ожидаете.
2. Использование хэлперов mapActions, mapGetters.. позволит сделать общение с vuex в компонентах гораздо симпатичней