Há muitas respostas, cada uma abordando alguns pontos - espero que isso possa lhe dar sua resposta, com uma boa explicação sobre o que é e como usar.
Usando click()é um apelido para bind('click' ...). O uso bind()considera o DOM como ele é quando o ouvinte de evento está sendo configurado e vincula a função a cada um dos elementos correspondentes no DOM. Ou seja, se você usar $('a').click(...), vinculará a função fornecida ao evento click de cada tag âncora no DOM encontrada quando esse código for executado.
Usar live()era a maneira antiga em jQuery; ele foi usado para vincular eventos exatamente como bind()faz, mas não apenas os vincula a elementos no DOM quando o código é executado - ele também escuta as alterações no DOM e vinculará eventos a quaisquer elementos futuros correspondentes. Isso é útil se você estiver fazendo manipulação de DOM e precisar que exista um evento em alguns elementos que podem ser removidos / atualizados / adicionados ao DOM posteriormente, mas não existem quando o DOM é carregado pela primeira vez.
A razão que live()agora está depreciado é porque foi mal implementado. Para usar live(), você tinha que ser capaz de selecionar pelo menos um elemento no DOM inicialmente (eu acredito). Isso também fez com que uma cópia da função fosse executada para ser associada a cada elemento - e se você tiver 1000 elementos, são várias funções copiadas.
A criação da on()função foi para superar esses problemas. Ele permite que você vincule um único ouvinte de evento a um objeto que não mudará no DOM (portanto, você não pode usar on()em um elemento que será removido / adicionado ao DOM posteriormente - vincule-o a um objeto pai) e simplesmente aplique um elemento "filtro" para que a função só seja executada quando for enviada para um elemento que corresponda ao seletor. Isso significa que você tem apenas uma função existente (não um monte de cópias) vinculada a um único elemento - uma abordagem muito melhor para adicionar eventos "ao vivo" no DOM.
... e é isso que as diferenças são, e porque cada função existe e porque live()é depreciada.
onaclickcausaclickcomo um sons de nomes de função como um verbo, uma ação, quando o que ele faz é não clicar no elemento (como você também pode fazer com a mesmaclickfunção)