It's called the Filesystem Hierarchy Standard and the gory details can be found here
Generally:-
/usr/bin
is for user programs.
/usr/sbin
is for system programs - those that are used by admins, but not general users.
Both the above begin with /usr
and the standard states that these could be hosted on a shared server (using NFS, for example) and accessed by the various hosts on a network. The variants without the /usr
(that is /bin
and /sbin
) are for essential programs that the system needs to boot (as the files in /usr
tree won't be available if they're on a NFS share).
/local/bin
are for locally compiled user programs.
If you have an executable, which wasn't installed using the system's package manager, then I suppose you should place it in /usr/local/bin
if it's to be used by many users, or you could leave it in your home directory if it's only going to be used by yourself.