I remember them like this from there usage standpoint
Use to convert date to the required format.
Qlikview is intelligent to find date filed and covert to date format during the load. If for some reason it did not recognize the format and treats it as a string. we can use Date# to help Qlikview interpret it as a date format. (we have to provide the date format for interpretation)
All dates are stored as numbers only at the back-end, and shown to you as a date.
So Date() will just store a date as number in the back-end and show you as a date.
While Date#() will do the same as Date() and can also change the text into a date, will store it as number and show you as date.
For better Understanding do one thing, take 2 text object and give these expression in each, you will get the difference
Date() : number to string conversion
Date#() : string to number conversion
the doc at the bellow link gives you the full idea about the dates functionality...
date function formats the expression as a date according to the string given as format-code.
date# function evaluates the expression as a date according to the string given as format-code. If the format code is omitted, the default date format set in the operating system is used.