So the “terminal” is the basic CLI that you use in the single-user, text-based mode. Terminal emulators are graphical programs that run in multi-user, graphics-based mode, and they hook into the terminal and allow you to access it inside graphical sessions. Some examples would be alacritty, kitty, urxvt, konsole, or terminator
Have you reached out to your ISP to see if they can give you a dynamic public IP? I recently swapped to a new ISP that was using CGNAT but after contacting their support team with my use case, they were happy to set me up with a public IP so I could continue my self-hosting.