Olá kl..
java.util.Date é a representação em Java da data e hora. Use-a se quiser trabalhar com datas ou horas em seu programa Java (somar, subtrair, etc.).
java.sql.Date é usada exclusivamente se você deseja se comunicar com um banco de dados SQL como MySQL, MSSQL, PostGreSQL, etc. Não a utilize para as coisas mencionadas anteriormente.
Se você estava usando para assuntos de SQL, suponho que já saberia, então talvez java.util.Date seja o correto para você.
Acredito que java.util.Date inclui a hora (HH:MM:SS); java.sql.Date não o faz.
java.sql.Timestamp permite manter marcas de tempo do banco de dados até o milissegundo. - MOD
Urs GS