@AggroPanda
CCNodes have a few properties and methods that I find useful such as rotation, scale, the scheduling methods, coordinate conversion, the ability to have children, that sort of thing. Most rendered game objects can make use of those so it makes sense to me to base my custom classes on that.
You get all of those if you subclass CCSprite but then you might be limiting yourself in how that object is drawn.
Now, as always, the "right way" to do something totally depends on the situation.
There are lots of more specialized classes in cocos2d, farther down the inheritance hierarchy, that might make more sense to subclass in certain situations. If you're making a special menu item, for example, you would probably get a lot of benefit from subclassing one of the CCMenu nodes and building off of that.
My suggestion is mainly geared towards the type of enemy class you described. If you start off with it just being a CCSprite and then later-on you decide that it should really be drawn as three animated sprites with some sort of particle effect, you might run into trouble when the code that uses the enemy expects the sprite methods to be there. The idea is to really separate what an enemy is (something with health and speed that can be destroyed) from how it's drawn (a single sprite, many sprites, a GL call).
Now, with all that being said, I also think that in most cases you are better off building something simple that works than spending a lot of time building something complex that is more difficult to maintain. If you know your enemies are going to be simple sprites then don't spend a lot of time overengineering them.
I think one of the real strengths of cocos2d is that is works really well with a whole spectrum of complexity. You can have a simple game with a single scene and a few CCSprites moving around an interacting with the player. All of that is pretty easy to set up in a few lines of code.
But, if you need to have more structure with a whole class hierarchy, scene management, or you need to step outside of the lines with some of your own code, cocos doesn't fight you. It's really liberating.