Money, Email, PhoneNumber, DateRange, Coordinates — концепты без собственной идентичности. Money(100, 'USD') равно другому Money(100, 'USD').
Email('не_email')function charge(Money $price) — понятно без комментарияEntity имеет идентификатор и может меняться (User с id=42 остаётся тем же User, даже если изменилось имя). Value Object не имеет id — идентичность = значение.