the major changes in 3.0 are the role of the Event Store and Event Bus. While in Axon 1 and 2 you need both, in Axon 3, an Event Store will actually replace an Event Bus instead. So it's one or the other that you'll need. That means your infrastructure is simplified when you use event sourcing. Full replays are also a lot easier.
Your Sagas and AggregateRoot no longer need to extend an Axon class. Simply create you object and annotate with the necessary annotation (they remain the same). Any invocations to apply(), end() or associateWith() can be done on a static method. So all you need to do to migrate is include a static import for these methods.
Besides the publish-subscribe approach, Event Processors (the technical component connecting your @EventHandler beans to the event bus) will also be able to interact with the event bus using a stream. This allows for cleaner API's in certain cases. The processor can keep track of its progress by storing the token of the last processed event. When reconnecting, it can use that token to continue processing where it left off.
For Spring users, we will switch to a Javaconfig approach. XML configuration will be deprecated or removed altogether, since @Configuration beans are much cleaner to work with. We are also working on an annotation that defines all building blocks (using sensible defaults) that haven't been explicitly configured in the application context. This makes setting up an application much easier.
To conclude, upgrading from 2.4 to 3.0 won't be too much work. There is a number of API changes that will probably break your code in several places. The infrastructure configuration also changes a bit, but it shouldn't be too much work to modify it. The Axon 1 -> 2 migration was much more "revolutionary" and it took about 2 days to change a reasonable codebase. The Axon 2->3 migration is expected to be smaller than that.
Hope this helps.