Então…
O conceito principal que voce tem que saber sobre HQL é que diferente do SQL nativo , em vez de voce criar a query baseando se nas tabelas e colunas do banco, voce vai se basear nas Entities (Entidades) do seu sistema.
Toda entidade quando se usa JPA ou Hibernate deve se utilizar a anotação @Entity para dizer que aquela classe está associada com uma tabela no banco de dados.
Então imagine que voce tenha uma entidade Cliente no seu sistema, aquela que voce mapeou com @Entity.
Se voce quiser buscar tudo da tabela cliente através de SQL voce faria assim :
select * from TB_Cliente; ==> Esse TB_Cliente é a tabela de cliente do banco
Agora no HQl se quisesse buscar tudo tambem ficaria assim :
from Cliente; ==> Repare que esse Cliente é a entidade do seu sistema, e o ‘select’ foi omitido.
Outra coisa interessante que deve-se saber sobre diferença entre SQL e HQL é que no SQL voce recupera um ResultSet que contem dados tabulares, ou seja tudo que vier voce terá que mapear em uma entidade pra poder manipular os dados depois.
Já em HQL os dados já vem como um Objeto que representa a entidade da onde voce buscou os dados, sendo assim facilita a vida do programador e ele já tem preechido as Entidades de que precisa.
Sabe Inglês? : http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html
Otima referencia para começar 
Abraços.