Using Perlin/Simplex noise in a 2d tile game for terrain generation

I've been doing a bunch of research regarding procedural 2d terrain generation and have come to the conclusion that the use of perlin/simplex noise seems to be the way to go for most things.

I've copied the code from opensimplex noise and generated some noise, but I'm not really sure what to do with that? How can I take this noise and use it to create terrain similar to games like Diablo2 or Path of Exile? Things placing trees and rivers, etc.

Also, would it be possible to use this to create simple tiles for my game? Say I wanted to create a bunch of different grass tiles(Isometric), would I be able to do this?

EDIT: So I've tried the following code to try and generate some natural looking rock placements and I'm not quite sure I understand how it's working. I've used the condition value < .1 for placing a rock, but the world seems to be full of rocks. Am I doing something wrong, or am I just not understanding how it's supposed to work?

    private void populateObjects(TileLoader tileLoader)
{
OpenSimplexNoise noise = new OpenSimplexNoise();

for (int i = 0; i < layers[1].layerData.GetLength(0); i++)
{
for (int j = 0; j < layers[1].layerData.GetLength(1); j++)
{
double value = noise.Evaluate(j, i);
if(value < .1)