As MTK358 explained :
Commands are globally callable programs due to their location being in the directories of your PATH.
How do they get there?
GNU creates essential programs like bash and their coreutils package.
Then each distro chooses carefully the programs that they believe are useful and want in their distro.
In this way your access to programs begins with the distro developers decisions.
Next, since GUIs are considered a standard at this point, the Desktop Environment, or the Window Manager, when loaded will carry with it software it feels is important.
Next, when you want some functionality and you find someone who has a project that fulfills this functionality and you retrieve the program, and either by your package manager or your own compilation makes it a callable command by placing the right files in the right directories.
Finally, when you want some functionality and your research for a solution returns null, then you write your own program and add it to your PATH.
Binaries are files that require you to reverse compile or find the source of to be able to read and understand its functionality. I'd suggest looking into C.
You can get the source to some of the most powerful and ubiquitous programs here...
http://www.gnu.org/software/software.html
Scripts are programs written in scripting languages without compilation and so can be executed and have their source examined from the executable.
You make certain sacrifices with efficiency functionality and resource usage when working with scripting languages, but like lumak explained they are fine for executing simple command sequences, especially when those commands require modification often. I also like to prototype in a scripting language. I find it makes my C binaries come together more seamlessly.
This sounds vast and intimidating, but it really is simple.
My example of the simplicity of this process from before, shown in its entirety...
Code:
# vim ungaunga.sh *VIM IS A COMMAND LINE TEXT EDITOR
*WITHIN TEXT EDITOR
*
* #!/bin/bash ###CALLS AND EXECUTES A CHILD PROCESS BASH FOUND IN THE /BIN DIR
* echo "mah monkeh" ###RUNS THE ECHO COREUTIL
*
# ls
ungaunga.sh
# chmod a+x ungaunga.sh *ADDS(+) EXECUTE(x) PERMISSIONS TO ALL(a): OWNER, GROUP, ALL USERS
# ungaunga
bash: ungaunga: command not found
# cp ungaunga.sh /dir/appended/to/PATH/ungaunga *REMOVED EXTENSION FOR THAT CLEAN COMMAND FEEL, CAN LEAVE IF YOU'D LIKE
# ungaunga
mah monkeh
#
Great resources...
GNU Manuals...
http://www.gnu.org/manual/manual.html
GNU Source Collections...
http://www.gnu.org/software/software.html NOTE: bash, coreutils