To the end user - there is really no difference - they will both do the same things - and work the same way.
Where the difference really lies - is in how they are created.
Dynamic Modules are create insided a DNN website ... with ( as a rule ) all the layout and program code being compiled on demand ... that is - whenever you request a page the layout and code for any dynamic modules on that page are compiled on the fly by the web server. (Note - the compiled code IS cached by the server - so technically the elements are only re-compiled if the server detects a changed element.
Non-Dynamic or Compile DNN Modules are create as seperate standalone projects ... with as a rule - only the layout elements installed on the server and all the CODE/programming elements precompilled into a .dll file - which is installed in the web sites /bin/ directory.
Which is better - well that really depends on the developer.
One of the strong arguements for Compiled modules is that the developers code is never published in such a way that any can easily copy / reuse it. This is a reasonably valid arguement but - technically there are also ways to PUBLISH a Dynamic Module in such a way that no source code needs to be distributed with it either.
Personally - I prefer the Dynamic route for development ... as it is possible to debug and modify code on the fly in many circumstances - and the debug cycle is nice and fast since there is no need for a COMPILE before you start a debugging session.
Westa