Bash is a Unix shell and command language, and is the
default shell on Linux (Ubuntu etc.) and OS X. In laymen terms, the
git which runs on the terminal of any Linux device is known as git
bash.
Git CMD:
(Command Line prompt) is the command-line interpreter on
Windows operating systems. Sort of an equivalent to the bad-ass
terminal in Linux, when you install git on windows and you are used to
using command line, one uses cmd to run git commands.
There is not at all any difference when it comes to git commands when
you use either of the above. I would prefer the terminal over cmd any
day, but if you like Windows for conventional reasons, I have used
Cygwin to give me the terminal like feeling on Windows.
Git GUI:
Essentially aimed at people who don't like the coding on
black screens a.k.a the command line. It provides a Graphical user
interface to run the git commands you like for eg. if you are
commiting some changes from your local repository to the staging
queue, you would just have to click a button to commit the changes
whereas the git command is 'git commit -m ""
Git CMD is just like regular Windows command prompt with the git command. It lets you use all of Git features through command line. Useful if you are already familiar with Windows cmd and you only work on Windows.
Git Bash emulates a bash environment on windows. It lets you use all git features in command line plus most of standard unix commands. Useful if you are used to Linux and want to keep the same habits.
Git GUI is a Graphical User Interface letting you use Git without touching command line. It is an alternative among other Git clients. Since Git GUI is very minimal, you could also look at other alternatives if GUIs interest you.
It is up to you to decide which you want to use. As many others, I recommend you to learn Git with command line before switching to a graphical interface. If you don't know which to choose between Git Bash and Git CMD, I'd go for Git Bash since bash is a really useful tool to learn.
Git Bash - It's a Bash based Terminal, [Bash is a Unix based Terminal] which simply means that user can directly use Unix commands in that Bash terminal
Git GUI - Used for on system as an IDE if you don't have an IDE or want to work in Github like environment but offline, then Git GUI is useful. If you are using VScode or Sublime editors they now have added a plugin for Git commands. So it is also an option for you to rather than installing the Git GUI
Git CMDdeprecated - Mainly used by Windows users because it also has some Git command features user can use directly, which is an issue while using a Windows Command Prompt [CMD].
Best Application of Git Version Control System is Github