Events are now fired from lastTime (exclusive) to time (inclusive). This allows an event at the end of an animation to be fired before the next animation starts. The "complete" callback will happen before the event though, because "complete" happens in update() and events are triggered in apply().
Note events are not fired for the previous animation during mixing (crossfading).
There are no longer separate animation files, they are now inside the skeleton file. This means there is just one file to manage, which is cleaner. Now that animations are stored in SkeletonData, they can be looked up by name which leads to cleaner runtime APIs.
cocos2d and cocos2d-x runtimes got a cleaner ObjC/C++ API.