For the mouths, put the images on the same slot, then change which mouth is shown programmatically (eg skeleton.setAttachment("mouthSlot", "mouthImage3")π. As long as you don't key the mouth slot during animations, the animations won't affect the mouth slot.
For the blink, you could write code it just not draw the skeleton every X frames or time. If it is at an interval, you could generate an Animation.ColorTimeline programmatically to change a slot color:
Skeleton skeleton = ...;
Animation.ColorTimeline timeline = new Animation.ColorTimeline(2);
timeline.setSlotIndex(skeleton.findSlotIndex("some slot"));
timeline.setKeyframe(0, 0.5f, 1, 1, 1, 0);
timeline.setKeyframe(1, 0.75f, 1, 1, 1, 1);
// Add to existing animation (could also create a new Animation).
Animation animation = ...;
animation.getTimelines().add(timeline);
You can even use setCurve to control the interpolation. However if it is the whole skeleton, having a ColorTimeline for each slot is not super efficient. Some runtimes (libgdx) allow a color to be set for the skeleton. You could write your own timeline:
Animation.Timeline timeline = new Animation.Timeline() {
public void apply (Skeleton skeleton, float time, float alpha) {
skeleton.getColor().a = time > 0.5f && time < 0.75f ? 0 : 1;
}
};
Hmm I think I will refactor the Timeline interface slightly. π It doesn't need getKeyframeCount.