The thing you can do in the terminal that you can't do in a GUI, is glue together over 50 years of useful tools, no matter where you got them from or if the authors have ever heard of each other.
If your workflow fits entirely within a single app's GUI, then yeah, the terminal version of that app is not going to be as useful. But if that app doesn't exist yet, you can put together an 80% version of it for 20% of the work.
Historically, it's also a lot more resistant to rot. Brian Kernighan isn't going to start charging a subscription fee for AWK - and if he did, there are many forks and similar tools.
And, addressing a specific point - why would I want to view a code diff in a terminal? Sure, 'diff old.txt new.txt' is probably less useful than popping it open in a nice GUI with highlighting. But "diff old.txt new.txt | grep '^+'" will only show me added lines, or "| less" and type "/foobar" to jump to all mentions of foobar.
And this is like, the least you can do - the stuff you learn in the second class of "Using the Terminal 101". You can easily use this with git, as a building block to make a quick script to graph the number of changes over time in your repo. Yes, there's probably a GUI somewhere in your workflow that can show this (maybe you click around in Github to find it). But, maybe you also want to just filter that to changes in a specific module in the codebase, or an author, or quantify what module changed the most each month. If you've learnt the building blocks, the scriptability of the terminal lets you put that together quickly.