Coesão e acoplamento são conceitos da orientação a objetos bem simples... Coesão diz respeito a responsabilidade das classes, acoplamento ao quantas conexões essa classe tem. Na pratica o objetivo é sempre aumentar a coesão das classes e diminuir o acoplamento!
Vamos deixar mais claro...
Coesão
Uma classe coesa é uma classe que tem apenas uma responsabilidade, isso quer dizer que ela faz apenas o que ela precisa fazer... Uma luz vai apenas iluminar, se ela começa a iluminar, tocar musica, fazer café etc... ela perdeu coesão e começou a cumprir as responsabilidades de outras classes. E a forma mais fácil de manter a coesão das classes é quebra-las em classes menores. Uma lâmpada, um tocador de musica, um fazedor de café etc... e no final você pode criar outra classe e juntar tudo isso.
Acoplamento
Esse é impossível de evitar mas bom minimizar, uma classe muito acoplada é aquela classe que usa tudo que existe no sistema. Ela precisa da calculadora, precisa do bloco de notas, precisa no paint... E sendo sincero você vai ter que ter classes assim no seu sistema, o problema começa quando todas as classes precisam de todas as classes e tudo ta amarrado em tudo. E pra resolver isso são dois passos, analisar a arquitetura do sistema e quebrar as classes em classes mais coesas para que as classes possam ser reaproveitadas e tudo esteja onde deveria estar e a coesão fique apenas nas classes que unificam tudo (como no exemplo da lâmpada que faz tudo ali de cima).
E não esqueçam o objetivo é AUMENTAR a coesão e DIMINUIR o acoplamento... não o contrario.