You're nearly there as long as you understand how targeted actions work. It pretty much allows actions to be handled on the same timeline but the targets to be different so you can apply actions to any node you please.
After that you have to use CCSequence and CCSpawn to simulate serial actions and parallel actions.
Remember that you CAN nest sequences and spawns together.
So your example of "fadeIn obj1 then fadeIn obj2, wait some time, then fade both out" can be done by nesting 1 spawn in your sequence of actions.
The concept would look like this:
sequence=[fadeIn-obj1, fadeIn-obj2, wait, spawn=[fadeOut-obj1, fadeOut-obj2], anotheraction ]
See if you can attempt to create the code by nesting a spawn at the end of the sequence. Remember to use targeted actions for each item.