They’re actually very different.
Remotes are names that you give to remote locations where the repository is stored. So when you clone a repository from GitHub to your local machine, the repository on GitHub is given a remote named
origin in your local repository. This allows you to
pull your changes between your local repository and the copy that is stored on GitHub.
Submodules are for when you need to compose some other repository inside the main repository. For example, you’re working on a project that does some amazing thing. Then you create some library for this project that you want to store in a separate repository. You would create a separate repository for the library but then include that library into the main project as a submodule so that the entire project can be built all at once.
Virtually every Git repository has at least one remote. Very few projects use submodules if they are using modern dependency management tools
Hopefully this picture will help too …