Some differences:
Graphics
- You won't be able to view images or PDFs directly inside terminal Emacs as you could inside gui Emacs. You'll have to get terminal Emacs to open them using some external program instead.
Windows
You won't have real, separate Emacs windows with terminal Emacs -- everything will stay within just the terminal itself.
With gui Emacs you can have separate Emacs windows (what Emacs calls "frames") all under control of the same Emacs instance.
Fonts, text effects, and writing systems
With gui Emacs you can have multiple fonts in one window at the same time.
With terminal Emacs you're limited to just one font for your entire terminal (which it will share with all other programs you run in the terminal).
Gui Emacs is capable of showing some text effects that terminal Emacs is not, such as italic.
Some Asian language writing systems might be available in gui Emacs that might not be available in terminal Emacs.
Colors
- Depending on your terminal version and Emacs version you might have more colors available in gui Emacs. Some terminals have True Color (24 bit color) support, and you might be able to get it working with Emacs or you might not. Getting 256 colors in terminal Emacs should be easily achievable in most terminals, however.
Keys
- More keys are bindable in gui Emacs than in terminal emacs.
Remote use
If you want to transfer your gui Emacs configuration to a remote machine and use it directly from the remote machine while logged in to it through something like ssh, it will only be useful if you can X-display back. This limitation is mitigated somewhat if you use TRAMP mode, but not everyone likes it.
Terminal Emacs users, on the other hand, are under no such limitation, and their config should work just as well as on a remote machine they're simply ssh'ed in to as it does locally -- as long as all the ancilliary programs they might use from Emacs are installed there as well.
X
- To use gui Emacs on unix/Linux/BSD-style systems, X has to be running, while terminal Emacs can be used even when X is not running.
Terminal <-> Emacs transitions and keeping configs in sync
If your Emacs configuration is focused on running Emacs in the gui, and you're doing something in the terminal and you want to edit a file in Emacs, you'll probably want to call up a gui Emacs window to edit that file. This is so much of an annoyance to some gui Emacs users that for quick edits in the terminal they'd prefer to use vim.
Users who's Emacs config is focused on running Emacs in the terminal don't have the above problem and they can edit files with Emacs in the terminal while working in the terminal without much hassle.
Some users have configurations that work equally rarewell in both guiGUI Emacs and in the terminal, but this is rare unless their configuration is rather. Typically such cases have a notably small, configuration as most users tend to spend most of their time in one or the other, so either their guiGUI Emacs or terminal Emacs configs will get more attention and care and portingcare—porting the changes to the less used one is likely to be considered not worth the bother.