Приветную!
Попробую быть краток.
Сущность - это объект содержащий набор данных с уникальным идентификатором. По мимо этого простого правила, есть еще одно немаловажное: данный объект имеет
цикл жизни, который может быть описан поведенческими методами.
Value Object - это объект содержащий набор данных (immutable). Ничего не гарантирует уникальность, они не имеют цикла жизни и не содержат
поведенческие методы, а самое главное что они неизменны (immutable).
А теперь попробуем ответить на ваши вопросы (я извиняюсь за грубость но они чуток некорректны по этому и ответы не очевидны):
Я так понимаю что то одно?
Тут все зависит от вашего контекста, домена и агрегата. Есть простые агрегаты которые могут содержать только сущности, если сложные где используются и те и другие. Тут нет очевидного ответа как и ограничения.
Или можно то и другое?
Можно использовать оба или не использовать, главное держать агрегат как можно проще и понятнее.
И как правильно?
Правильно, понятие растяжимое и как я сказал все зависит от агрегата который вы пишите, от контекста который вы моделируете,и от бизнес логики которая есть в вашем домене. Используйте то что решает ваши нужды.
Когда надо?
Тоже самое, тут нет правильного ответа. Надо тогда когда ваша бизнес логика начинает работать.