So I would avoid thinking about it in terms of making money. If you do something (whatever it is) because you think you will make money, chances are you'll make no money. This is especially true for art. People want something compelling and honest. Something that has a vision or is original. Most of the studios I've worked at that were just trying to cash in ended up just copying popular games and they never sold.
You want to do it as a hobby, as an art, and make something you love. Then people will love it too. Chances are, you might make money this way (but the market is very crowded, there is no guarantee of anything). Also, don't try to copy popular games. Yeah, Notch made bank off Minecraft, but now there are like 1,000 clones and probably none of those people made any money (even though technically they may have been on par with Minecraft or possibly better). So make something original, maybe an idea you've had for a while, or some genre that is more niche and not as crowded. I think that is the way to do.
But another path, which I don't personally like but could be profitable, is to make like 100 games. Do simple games, I'm talking Flappy Bird, or Bejeweled, or whatever. Theme them with something that is current, but maybe not super generic. Something that is unique, but doesn't require a lot of fancy art. But try to make a game in like 2 weeks or 1 month tops. So you could potentially have 10 or 20 games done in a year. While each game may not make a lot of money, even some minor profit can add up when you have 20 games. Then next year, you'll have 40 games on the store. And you can keep going. Eventually maybe one of them will be a hit. Even if not, if 1 game can bring in $50 a month, it seems like nothing, but if you have 40 games for sale that is $2,000. That is more of a business I am not interested in, but some people make a living like this.
In terms of promotion, just the usual social channels like Reddit, Twitter, and YouTube. Also forums, but they are not as popular these days. I think Twitter has the most potentially to go big, provided you have a good game.
You have to make scripts generic. When I code, I have one main project. Then when I need a new feature, I create a different project just to make this feature (also helps because I can test quickly and not screw up the main game by accident). I code everything generic. You can use NodePath and export variables so you don't have hard-coded nodes or numbers. Then once it is working perfect, I paste it into the main game, then make any game specific modifications. But if I make a new project, I can reuse the original generic code and usually it will work without any code changes.