Use because para dar o motivo, para responder por quê. O motivo vem logo depois de because.
because dá o motivo
We stayed home because it was raining.
She's happy because she passed her exam.
He left early because he felt sick.
so dá o resultado
Use so para dar o resultado, o que aconteceu depois. O resultado vem logo depois de so.
It was raining, so we stayed home.
She studied hard, so she passed.
He felt sick, so he left early.
Experimente: Amina quer explicar POR QUE ficou em casa. O motivo foi a chuva. Qual delas dá o motivo? (I stayed home because it was raining. / I stayed home so it was raining.) Resposta: I stayed home because it was raining. — Ela está dando o motivo (por que ficou em casa), então use because: because it was raining. "So it was raining" significaria que a chuva foi o resultado de ela ficar em casa, o que não faz sentido.
Experimente: Hiroshi quer dizer o que ele FEZ por causa disso. A chuva veio primeiro; ficar em casa foi o que aconteceu depois. Qual delas dá o resultado? (It was raining, so I stayed home. / It was raining, because I stayed home.) Resposta: It was raining, so I stayed home. — Ele está dando o resultado (o que fez depois), então use so: so I stayed home. "Because I stayed home" diria que a chuva aconteceu por causa dele, o que está invertido.
although mostra uma surpresa
Use although quando a segunda parte é uma surpresa depois da primeira, algo que você não esperaria. Pode começar a frase (com vírgula) ou entrar no meio (sem vírgula).
Although it was raining, we went out. (surprising, you'd expect us to stay in)
She passed although she didn't study.
Although the hotel was expensive, we enjoyed it.
Experimente: Você esperaria que o tempo ruim deixasse as pessoas em casa. Mas Mei e as amigas saíram mesmo assim. É uma surpresa. Qual delas mostra a surpresa? (Although it was raining, they went out. / Because it was raining, they went out.) Resposta: Although it was raining, they went out. — Sair na chuva é surpreendente, então use although: Although it was raining, they went out. "Because it was raining" significaria que a chuva foi o motivo de eles saírem, e não uma surpresa.
but mostra um contraste
Use but para juntar duas ideias que são diferentes ou surpreendentes. But vai no meio, geralmente com uma vírgula antes. Assim como although, ele mostra um contraste — mas although pode começar a frase, enquanto but só junta no meio.
It was raining, but we went out.
The hotel was expensive, but we enjoyed it.
I was tired, but I finished my work.
Not "But it was raining, we went out." — say "It was raining, but we went out.". But junta no meio; ele não pode começar a frase como although pode.
Experimente: O quarto era pequeno. Você esperaria que isso fosse ruim. Mas era confortável. As duas ideias são diferentes. Qual delas mostra o contraste? (The room was small, but it was comfortable. / The room was small, so it was comfortable.) Resposta: The room was small, but it was comfortable. — As duas ideias são diferentes (pequeno, mas mesmo assim confortável), então use but para mostrar o contraste: small, but comfortable. "So it was comfortable" significaria que ser pequeno deixou o quarto confortável, o que não é o sentido.
Use só uma palavra de ligação
Escolha uma palavra de ligação, não duas. Não diga because ... so juntos, e não diga although ... but juntos.
Because it rained, we stayed home. (not "Because it rained, so we stayed")
Although I was tired, I went out. (not "Although I was tired, but I went out")
Not "Although I was tired, but I went out." — say "Although I was tired, I went out.". Although já mostra a surpresa, então você não precisa também de but.
Experimente: Which one is right? (Because it was late, we went home. / Because it was late, so we went home. / Although it was late, but we went home.) Resposta: Because it was late, we went home. — Uma palavra de ligação já basta: Because it was late, we went home. "Because ... so" e "Although ... but" duplicam duas palavras de ligação, e você só precisa de uma.