GUI is a bit like the matrix - if you don't know how it works, it gives you a visual way of doing things. CLI lets you do things directly with your computer.
For example, from GUI you can start two browsers, and then drag a file from one window (maybe USB drive) and drop it in another (maybe your home folder)
alternatively you could type 'cp /media/usb/filename /home/filename'
The CLI will use a great deal less resources, and works on computers which don't have enough power to drive a monitor or display graphics. It is a far more direct link to your computer - as in Matrix - it's like seeing the green code rather than having a fake environment imposed on top of the code. Direct drive instead of remote control.
Generally, CLI can perform all tasks possible in a system, whearas GUI cannot - and it needs programs to be specially coded - with extra code and complexity to make it display stuff on a screen.
One example of this is the very famous 'Crunchy' in linux - we have lots of sexy widgets, and ways to display things on desktop, but the best by far is called 'conky' which can easily be edited to show any information in a very direct way.
I can browse internet using 'elinks' which is a very small program (around 300kb) and can browse internet from a CLI window - I can use Yahoo Answers with this software.