Generally speaking my approach is to start with the weakest monster/enemy in the game, or something close to that, and then set his stats to something in the low hundreds (often between 100 and 200). I set it that high because that allows for more granularity of status effects on that stat without having to use floating point. I.e, if something reduces your health 66%, that works better on 100 than on 10 or 5.
From there, setting the stats on the rest of the enemies/monsters is all relative. How do they compare to the anchor enemy? Then later on, as there are an increasing pool of enemies that are all "valid" in a general sense that they feel pretty correct, then you start balancing the new ones relative to that pool. What is the role of this new enemy relative to all the rest? What makes it different enough to be worth being here? Etc.
In terms of stat scaling by level, that's a trickier question. Generally speaking you will need to go with a low exponent if you have a fixed number of levels. For Bionic Dues, we are using 1.06 as our scaling for up to 50 levels. 1.06^50 means that the end-game level stats are 18.42 times higher than the starting game stats. So an enemy with 400 health at the start has 7,368 health at the end of the game. You can obviously tweak that as you like.
But it's very sensitive to small changes: going up to 1.1 and 99 levels leads you to a final-game stat that is 12527 times the starting stat. So that enemy with 400 health suddenly has 5,011,131 health at level 99 and 626,350 health at level 50.
Generally speaking, open-ended non-capped leveling is an enormous pain and something that will really bite you hard, as we discovered repeatedly in Valley 1.
Anyway, as you are figuring all this out, make a spreadsheet that projects the health at a variety of levels, to self-check yourself.
Hope that helps!