When compiled into binary, what signifies the end of a string? How can this be differentiated from user input which compiles to the same binary?
Both programs in binary form and binary user data are usually stored in files, and normally the filesystem records the length of all its files separately. So, the operating system always knows the end of the binary string, which is supposed to be loaded and executed as a separate process. Please see this question and its answers for more information. 

Could an attacker use a binary input with malicious code, added in the end of input string, to modify normal program behavior? Yes, and this method of attacking is called buffer overflow. Fortunately, modern programs normally don't use input functions, which can lead to the buffer overflow.