With relation to "lord" and "knight" specifically: depending on the area, "lord" historically might or might not have had a specific meaning; usually it was very general. However usually lords were nobles (some petty "lords of the manor" might have been merely freemen) and in colloquial meaning "lord" generally refers to a member of the aristocracy. As I say, it depends where you are: in Scotland a laird (translated into English as "lord") really just means "owner of freehold land" which is where all those bogus internet noble titles come from. It's all a bit more complicated than that, vague and ill-defined, and hard for modern minds to understand, of course.

A knight, on the other hand, is a military qualification but doesn't necessarily denote membership of the noble class. A noble is not necessarily a knight (although most are) and many - probably most - knights were (and certainly are) commoners. Over time, knights tended to develop into a class of their own (which, combined with civilian persons of status, ultimately became the gentry) but they were not, strictly, members of the aristocracy and did not have noble privileges - though they might have had knightly privileges. Many of them would not even have owned land.

There is a further title in English often overlooked which bridges the gap - the baronet - which is a sort of hereditary knighthood. It doesn't indicate noble rank, but it's a marked social step above other commoners.

The important thing to note is the military/civilian distinction: a renowned knight, although often a very junior noble or even a commoner, might well be given command in battle over inexperienced members of the aristocracy (or, more subtly, deployed alongside a senior one in a distinction between titular and de facto commanders). Obvious examples from England would be John and William Marshal, Sir Walter Manny, Sir John Fastolf, and Sir John Talbot. Of course, many of those were later given higher noble titles in recognition of their wartime deeds, but that came after they had already held command.