One writes to standard output and one writes to standard error. Although these normally write to the same place, they are two separate streams and so can be redirected individually, so you could (for example) redirect standard output to a file but leave standard error writing to the command line.
Note also that because they are two separate streams, if you haven't redirected either of them, you cannot guarantee the order in which any messages are written. Try experimenting with a program that mixes lots of each call together and see what output you get.
Also standard input, standard output, and standard error are more related to the operation system, than Java specific. It may be better to research more on what the OS does with it first.