A Shell is simply a program that allows the user to interact with the system. The more formal name is "command shell", and it's not unique to Linux. The DOS COMMAND.COM program, for example, is a shell.
It's called a "shell" because it forms a sort of container for doing work, like a seashell does for what lives in it. The shell program typically is just a loop that reads a command line from a terminal or other input source, parses it, builds up the environment that will be passed to an application, loads the application and runs it, then repeats.
In ancient times, the shell was an integral part of the OS, but Unix popularized the idea of alternative shells such as ash, bash, csh, ksh, zsh and so forth. All have the same basic function, which is to do what I outlined above. These days Windows also has multiple shells - the COMMAND program is the old dumb DOS shell and the CMD program is similar, but smarter - it has some extra functions that make it easier to write intelligent scripts.
There are other types of shells as well. Shells have been written based on LISP, for example. And windowing systems provide what's known as a "gui shell".
An IDE is no substitute for an Intelligent Developer.