EDIT: LINQ to Objects não se comporta como eu esperava. Você pode estar interessado no post que acabei de escrever sobre isso ...
Eles são diferentes em termos do que será chamado - o primeiro é equivalente a:
Collection.Where(x => x.Age == 10)
.Where(x => x.Name == "Fido")
.Where(x => x.Fat == true)
sendo que o último é equivalente a:
Collection.Where(x => x.Age == 10 &&
x.Name == "Fido" &&
x.Fat == true)
Agora, a diferença que realmente faz depende da implementação de Whereser chamado. Se for um provedor baseado em SQL, espero que os dois acabem criando o mesmo SQL. Se estiver no LINQ to Objects, o segundo terá menos níveis de indireção (haverá apenas dois iteradores envolvidos em vez de quatro). Se esses níveis de indireção são significativos em termos de velocidade é uma questão diferente.
Normalmente, eu usaria várias wherecláusulas se elas sentissem que estão representando condições significativamente diferentes (por exemplo, uma diz respeito a uma parte de um objeto e outra é completamente separada) e uma wherecláusula quando várias condições estão intimamente relacionadas (por exemplo, um valor específico é maior que um mínimo e menor que um máximo). Basicamente, vale a pena considerar a legibilidade antes de qualquer pequena diferença de desempenho.
Fatpropriedade booleana ? Isso é maldade.