Custom objects require Enterprise. But for most use cases, there are patterns on Professional that get you 80% of the way there. Here is when each approach makes sense.
Most CRM setups treat lifecycle stages as a dropdown field. They are revenue architecture, and getting them wrong means every report built on top is working with bad inputs.
Most companies blame their outbound results on messaging. The problem is almost never the words. The problem is the data architecture underneath.