1) To become more productive. For me, it is faster to do things in a shell than just clicking. I'm talking about using a tool, not setting up a service/tool/etc, because sometimes it's faster to have a wizard and just click on
Next, although those wizards also exist in command-line versions :)
2) To use the command-line version in your applications. For example, let's suppose you want to convert a PDF to a text file. If you use the GUI version, it's fine. But if it also provides a command-line interface where you can do something like:
./pdf2text input.pdf output.txt, then if you need to develop an application that reads text from a PDF, you can easily use it, without using any APIs, or doing some tweaks...
3) To learn the general things of an application. For example, if you have diff installed on Windows, and a front-end for it to compare two files. That's perfect. But what if you need to use it on Linux? You can find the same front-end for Linux, but what if it doesn't exist? You'll have to learn again how to use it on Linux, install a new front-end and get used to work with it. If you have learned how to use the command-line version, you wouldn't have needed it ;)
About 3)... some people have lots of troubles getting used to work with Git on Windows. They say there are no good front-ends of it on Windows, but if you just learn the command-line way, you won't have problems. It works the same way. Of course, the problem is that sometimes peoples are scared of command-line ;)
I suggest you learning command line versions of:
- Compilers like gcc
- Debuggers like gdb
- Git ;)
- and lots of tools in GNU/Linux that you can get working on Windows like egrep, awk, find,...