Difference between a wavelet transform and a wavelet decomposition
I don't think there is any difference.  The documentation for dwt2 says


  Single-level discrete 2-D wavelet transform
  
  The dwt2 command performs a single-level two-dimensional wavelet decomposition...


While the documentation for wavedec2 says 


  Multilevel 2-D wavelet decomposition


The difference is that dwt2 is single-level (produces a single A, H, V, D output):



and wavedec2 is multilevel (produces array C output, which contains multiple A, H, V, D inside it):