Am I correct in thinking that things like status effects etc. wouldn't need to be included in the main ISkill inheritence tree?
You can. It's up to you how to design it. You can create a new class StatusEffect that implements ISkill, and this class will have common attributes for status effects like duration, damage +/-, and so on. Then if there's a special status effect that requires extra code, it can inherit from the main StatusEffect class, and add extra code as necessary.
I'd do it this way, so I can have an array of ISkill in the Actor class, and just iterates through it every frame calling applySkill(this);
You could just call applyEffect(Poison) within applySkill of any specific skill, right?
Yes, that's up to your implementation details.