First option is the best, 2nd wont give you ability to create common code for all them increasing work by 10x. Doing components won’t help here because you end up creating 10 actors with different component and it needlessly complicate communication between objects
As for abilitied, i classes (i assuming by “class” you mean class of character that player can have) share them you will need to do ability system, you make base ability class and then base character would have array of abilities. Ue4 got some ready gameplay ability system but i never explored it
Even if classes don’t share abilities you may want to make/use such system if you plan to do some more complex ability system