Animation (@keyframes) vs Transtion

A side from the fact that @Keyframes allows you to manipulate the properties of an elements on more stages (0 25% 50% 75% 100%) and it allows to iterate the animation more time.

Are there other differences between @Keyframes and Transition? When I should prefer one rather than the other?

I saw many people using transition in pair with :hover but it can actually be used, like @Keyframes, with JS. All you have to do is to add a new class to the element.

Is it a performance issue?