He leído WordPress profesional y dice:
esc_htmlLa función se utiliza para eliminar datos que contienen HTML. Esta función codifica caracteres especiales en sus entidades HTML
esc_attrLa función se utiliza para escapar de los atributos HTML
esc_url. Esta función debe usarse para eliminar la URL de caracteres ilegales. Aunque href es técnicamente un atributo HTML
¿Cuál es la diferencia entre estos?
Si tengo
<script>alert('hello world!');</script>this is some content
¿Sería todo < >convertido a < >? ¿Será la URL algo así %xxx?
fuente
