What is the different between the two?

fprintf(stdout, "Hello there\n");

Produces the same output as

fprintf(stderr, "Hello there\n");

Is there a practical use for stderr? Is it logged or something? Or I am thinking maybe it is suppose to be different but depends on the OS, does Linux use stderr the same way as DOS? Or does it log it or something?