I think I need to know what a shell is before I can understand a terminal. To me shell is just a layer exposed by the OS which allows programs to access OS functions.

And terminal is an interactive UI to interact with the OS and its programs. Emulator is synonymous with something here?