Hay muchas respuestas, cada una de las cuales toca algunos puntos; con suerte, esto puede darle su respuesta, con una buena explicación de qué es qué y cómo usarlo.
El uso click()es un alias de bind('click' ...). El uso bind()toma el DOM como está cuando se está configurando el detector de eventos y vincula la función a cada uno de los elementos coincidentes en el DOM. Es decir, si usa $('a').click(...), vinculará la función proporcionada al evento de clic de cada etiqueta de anclaje en el DOM que se encuentre cuando se ejecute ese código.
Usar live()era la forma antigua en jQuery; se usó para vincular eventos como lo bind()hace, pero no solo los vincula a elementos en el DOM cuando se ejecuta el código, sino que también escucha los cambios en el DOM y vinculará eventos a cualquier elemento que coincida en el futuro. Esto es útil si está manipulando el DOM y necesita que exista un evento en algunos elementos que pueden eliminarse / actualizarse / agregarse al DOM más adelante, pero no existen cuando se carga el DOM por primera vez.
La razón por la que live()ahora se deprecia es porque se implementó de manera deficiente. Para usarlo live(), tenía que poder seleccionar al menos un elemento en el DOM inicialmente (creo). También provocó que se vincule una copia de la función a cada elemento, y si tiene 1000 elementos, son muchas funciones copiadas.
La creación de la on()función fue superar esos problemas. Le permite vincular un solo detector de eventos a un objeto que no cambiará en el DOM (por lo que no puede usar on()en un elemento que se eliminará / agregará al DOM más adelante; vincúlelo a un objeto principal) y simplemente aplique un elemento "filtro" para que la función solo se ejecute cuando se expanda a un elemento que coincida con el selector. Esto significa que solo tiene una función que existe (no un montón de copias) ligada a un solo elemento - un enfoque mucho mejor para agregar eventos "en vivo" en el DOM.
... y esas son las diferencias, y por qué existe cada función y por qué live()se deprecia.
onhacerloclickporqueclickcomo nombre de función suena como un verbo, una acción, cuando lo que hace es no hacer clic en el elemento (como también puedes hacer con la mismaclickfunción)