Since we're on complexity, as a Pikachu main I'll say that Pika is a mixed bag when it comes to complexity.
At low levels (when you're just beginning to learn Pikachu), he is difficult to use, because knowing how to use tjolts, thunders, and quick attacks at the right moments takes experience and thought. Since all of his moves are good for multiple situations, it's also hard to know what move to use in what situation. You have to know %s for your combos and pressure strings.
At mid levels, though, he is easy to use. Once you know the basics, taking your game to the next level isn't difficult at all. It's just about tightening up your execution. Once you know what all the moves are good for, mixing them up and performing them accurately are minor steps.
But he becomes hard to use again at high levels. He has some severe limitations in his moves--no dominant options like Sheik's f-air or Diddy's up-air or Ness' b-air that you can rely on to be good in any and every clutch situation. You have to use different strategies for different matchups. Things like ledge canceling, using your frames properly after Thunder, and mixing up your edgeguarding become important too. The struggle for mid-level Pikachus to break into high-level is real, and sometimes it's hard to know if you're really there because there are certain matchups you'll still lose despite having an easy time in other matchups.
Shulk, Greninja, Peach, Pacman, and Villager are the most difficult to use, I think, with Megaman trailing slightly behind Villager (because Megaman has a good grab, basically; Villager has to work around his bad grab, and that makes him more complex).