The Best place for using Hibernate Criteria would be when ever you want to lay restrictions or have an aggregate operations performed or doing any search kind of functionality.
eg:- Lets say you have a Employee class and you have say 10 columns for the Employee Table. While fetching records from the database you need certain conditions to meet say age should be greater than 25 and salary should me less than 25k and location should be from India ...!
This can be done using hql too but hibernate comes with handy implementations which are easy to write and less error pron than hql.
Hql is the best place to use when ever you want to perform normal calls to the database.
Eg: Performing crud operations or executing a stored procedure.