One thing you will have to learn how to do if you choose to create your own assets is how to create an animation for a character or object. Depending on what game engine you are using and what the animation is, you will just need to write a few lines of code to manipulate the movement of the object. But, if you are looking to make a character run or jump, that will require a little bit more.
For 2D characters you will need a sprite sheet that has each frame of the characters movement broke out. You could do this in the program you used to create the character and just adjust the characters objects piece by piece, but there are other options that are far more efficient.
I use Spriter (the free version to Spriter Pro). I can do just about the same with Spriter as I could with Spriter Pro, but the Pro version has a few more features to help with the workflow. The software license itself is actually very cheap at less than $100 to buy. There is also a deal where you can buy the Beta version for Spriter 2 for the price of Spriter Pro. I only create simple animations right now and this works great for me. There is plenty of training videos as well to help explain how to create animations that work their way up to more complex options.
There are plenty of choices to pick form as well, each varying in price and functions. There is Spine, Dragonbones Pro, Marionette Studio, Creature, and much more. Depending on what you are wanting to create, I would take a look at each one and weigh the costs and functionality that comes with each to decide on which one works best for the games you are wanting to create.