I am looking everywhere (Modern C++ design & co) but I can\'t find a nice way to store a set of callbacks that accept different arguments and operate on different classe
In C++11, store std::function. You can use std::bind to create the function from one of a different signature, for example:
std::vector> deferred;
deferred.push_back(std::bind(&Class1::action1, this, arg1, arg2));
// later...
for (auto f : deferred) f();
If C++11 isn't an option, then Boost has very similar function and bind templates. I think they might also exist in TR1, although I don't have any historical references to check.
If Boost really isn't an option (and TR1 doesn't provide these), then I strongly recommend that you make it an option; otherwise, use Boost as an example of how to implement this. Without variadic templates, it gets very hairy.
(And since you mention Modern C++ Design, read the section on type lists; that's how you would do it without variadic templates).