What is the difference between xterm and terminal in Ubuntu?
The difference is that xterm is the standard terminal emulator of the X Window System, while gnome-terminal is the standard terminal emulator of the GNOME project.
They are similar because both are terminal emulators.
For more information about why terminals need to be emulated and what a "real" or a "virtual" terminal is read this question and answer: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal.
A terminal is not a shell. To learn about the difference between a terminal and a shell read this question and answer: https://unix.stackexchange.com/questions/4126/what-is-the-exact-difference-between-a-terminal-a-shell-a-tty-and-a-con.