Qual é a diferença entre um literal de objeto JS e uma string JSON?

Eu tenho uma confusão sobre o que exatamente as pessoas querem dizer com Objetos Literais, JSON, Objetos JavaScript, para mim, eles parecem semelhantes:

{foo: 'bar', bar : 'baz'}

AFAIK, acima é objeto literal, json, bem como objeto javascript, não é?

O objeto literal e json significam a mesma coisa?

Como vocês diferenciam o que é o quê?

questionAnswers(6)

yourAnswerToTheQuestion