Whew, I took an entire class on just this stuff once, so bear with me, I'll try to distill it:
Strings are just... strings. Call it "input" to your program...
Let me define a string "aabbbbbbababab"
It doesn't mean much by itself, its just a string.
A "language" is a pattern (the language is like what your program is looking for) that can be understood by a "machine". So, a turing machine is just a theoretical construct of a "machine" that involves an infinitely long tape that stretches in both directions. The machine has a definition (a string that defines how it behaves) and it reads the tape. So, read head moves right, reads a value from the tape, depending on the value, moves some number of steps left or right, and reads again. The definition of the machine (like the source code of the program) defines the behavior of a machine.
A machine is designed to be able to "recognize" a "language". There are certain classes of languages that are "machine recognizable". This really goes beyond the scope of the discussion, but suffice it to say, any program that can be computed by a computer is "turing recognizable". (There are also lesser forms of machines that can interpret simpler languages. The simpler languages might be called "regular expressions", etc)
Anyway, so, if I define a machine by a string (trust me, its possible, but the way this is done is beyond the scope of this discussion), I want it to parse the input string, evaluate it, and IF it "belongs to the language defined by the machine", then I halt and "accept". If it does not fit my language, I halt and "reject." (Pass/Fail)
So, the language:
ab*a*b
This language just defines a language that begins with an 'a', has 0 or more b's (* is the Kleene star, which denotes that a character may occur 0 or more times), has 0 or more a's, and terminates with a b.
So if I define my machine to "accept" that language, then if I input:
aaabab
The machine rejects, because it does not meet the language. (Too many a's at the start)
If I input:
abbbaaab
The machine accepts, because it fits the language.
And, believe it or not, you can build ALL of modern programming theory out of these simple ideas. Its staggeringly complex though. I hope that made some sense.