Thick vs thin client just comes down to how much logic is in the program that's running on a client's machine. A program that runs on a user's computer and sends most of its data off to a server for processing is considered a "thin" client (because most of the work and code and logic is on the server, away from the client). A program that runs on a user's computer and does most of its processing of the data on the machine itself without talking so much to a different server is a "thick" client. (here, "processing data" is a pretty vague term; basically, the less your program depends on a different server machine and the more it works "independently," the thicker it is).
How do they come about? That's largely historical. Usually what will happen is someone will write a program or a research paper and will just invent some term. People then use the research paper or program, and they simply continue to use the same terminology that was just invented. Then it catches on.
How to people know about these things? In the past I'm not sure what the best way to learn about it was, but these days it pretty much comes down to googling new terms that you come across. Also, the terms are usually pretty logical, so if you think about them then they might make a little more sense (in addition to googling) (i.e. "thick client" implies the client is thick, or that is to say, bigger; a "thin client" implies the client is smaller and probably does less).