Правильный ли, подход к проектированию приложения в symfony 3?
services:
    app.product_repository:
        class: AppBundle\Repository\ProductRepository
        factory: ['@doctrine.orm.default_entity_manager', getRepository]
        arguments:
            - AppBundle\Entity\Product
// $this->container->get('app.product_repository')->getClassName();
Уберите методы save и delete. Не нужно тащить старые привычки на новую систему.
Symfony и Doctrine используют DataMapper, а не ActiveRecord
Хэндлер - это entity_manager 
В контексте AppBundle вам не нужны интерфейсы и прочая абстракция - это реально излишне, за исключением моментов, кода вы работаете или с доменными моделями, которые лежат в папке vendor или наоборот - вы сами vendor и AppBundle должен зависеть от ваших интерфейсов.
Предполагаю, что 90% ваших вопросов связанных с архитектурой вы найдёте в ответах   Сергей Протько 
При работе с Symfony 80% времени должно уходить исключительно на конфигурацию приложения. Почитайте "Лучшие практики" и если у вас возникают вопросы, "а как это сюда воткнуть" - поверьте, google вас не подведёт, всё на много проще, чем кажется.
"Будет ли правильно на каждое действие (создать/редактировать/удалить) делать свой хендлер" - нет конечно же. Зачем вам плодить на каждое действие по классу, только для того, чтобы вызвать в нём буквально пару строк.
Относительно статей... Посвежее бы, правда. Сходите на github и посмотрите на самые популярные бандлы.
Не правильный. Читайте Эрика Эванса. Читайте про unit of work. Читайте про "save your repositories from save".