A Programação Orientada a Objetos (POO) é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação. É também uma outra visão de como programar. Quando for pensar na estrutura e lógica do programa, você não vai pensar apenas em quais váriaveis você vai ter, e quais funções você vai aplicar nelas. Você deverá pensar em quais os objetos que formam seu programa. Você decide o que é o objeto. Num cadastro de uma faculdade, seus objetos podem ser alunos, professores e matérias, por exemplo. Você escolhe quantos objetos terá, de forma que facilite na sua implementação.
Na POO o programador é responsável por moldar o mundo dos objetos, e explicar para estes objetos como eles devem interagir entre si. Os objetos "conversam" uns com os outros através do envio de mensagens, e o papel principal do programador é especificar quais serão as mensagens que cada objeto pode receber, e também qual a ação que aquele objeto deve realizar ao receber aquela mensagem em específico.
Cada objeto seu será uma classe (que você pode pensar como um Record do Pascal ou Struct de C). Entretanto, você não vai apenas declarar quais são as váriaveis que farão parte de sua record (ou Struct). Você dirá também quais são as funções que podem ser aplicadas nesse objeto (essas funções que são declaradas dentro da classe são chamadas de métodos). Seus métodos só poderão ser aplicados nos objetos aos quais eles pertencem.
Ou seja, a partir de agora você não vai dividir seu programa apenas em funções, você vai dividi-lo em objetos (classes pra ser mais específica … um objeto é uma instância de uma classe). Essa pequena mudança parece mínima, e talvez de pouca valia, mas faz muita diferença.
Uma linguagem considerada orientada a objetos também deve proporcionar modificadores de acesso (para facilitar encapsulamento de dados e depuração), herança (facilita a legibilidade do código e facilita o reuso dele). Pode também oferecer sobrecarga, polimorfismo, entre outras facilidades.
Em suma, a principal vantagem é que com orientação a objetos é muito mais fácil organizar o teu programa.