It is possible to re-use actions, but it requires some modification to cocos2d.
I got tired of all the deallocations and reallocations so I changed the Action system somewhat.
Patch here: http://code.google.com/p/cocos2d-iphone/issues/detail?id=638&sort=-id&colspec=ID%20Type%20Status%20Priority%20Milestone%20Component%20Owner%20Summary
Once you have that in place, your actions can then recalculate their durations should anything change. However, it also requires changing the implementations of some actions such as Sequence, Spawn, and MoveTo/MoveBy.
I've made my own implementations RecalculatingSequence, RecalculatingSpawn, MoveToMutable, and MoveByMutable.
The recalculating actions will pass updateDuration requests to their children, and then update their own duration with the sum of the children (or the largest duration, in the case of Spawn).
MoveToMutable and MoveByMutable allow you to change the duration or endPoint (or delta, in the case of MoveBy). I've also added pixelsPerSecond, which allows you to maintain the speed of movement when changing the endPoint or delta.
The end result is that I can retain actions for my objects (each gets its own copy, of course), use them, modify them, and know that the actions will deal with any modifications I apply at runtime. The debug window shows NO deallocs while my scene is running. In doing so, I've gained about 2-5fps (hard to measure exactly) on average in my current game (which involves up to 50 sprites moving around constantly).
If the updateDuration method gets added to mainstream cocos2d, I'll contribute my actions. They could either be added separately or the current cocos2d versions could be modified. The changes themselves aren't really that big.