I had a play with various `Compile` options and didn't get anywhere (I managed to make it slower though!). However, you can get a nice little speed boost using `ParallelTable`. Your original on my machine:

 NFourierTransform[f_Function, {kmin_, kmax_}] := 
 Interpolation@
 Table[{k, 
 Chop@NIntegrate[f@x E^(-I k x), {x, -Infinity, Infinity}]}, {k, 
 kmin, kmax, (kmax - kmin)/100}]
 TimePropagate[f_Function, kl : {kmin_, kmax_}, {tl__}] := 
 Quiet@Table[NFourierTransform[f[#] Exp[-(#^2/2) t] &, kl], {t, tl}]
 

`TimePropagate[Exp[-Abs@#] &, {-3, 3}, {0, 0.1, 0.1}] // AbsoluteTiming` runs in 5.65 seconds. I launch some kernels

 LaunchKernels[]

and throw in a `ParallelTable`


 NFourierTransform[f_Function, {kmin_, kmax_}] := 
 Interpolation@
 ParallelTable[{k, 
 Chop@NIntegrate[f@x E^(-I k x), {x, -Infinity, Infinity}]}, {k, 
 kmin, kmax, (kmax - kmin)/100}]
 TimePropagate[f_Function, kl : {kmin_, kmax_}, {tl__}] := 
 Quiet@Table[NFourierTransform[f[#] Exp[-(#^2/2) t] &, kl], {t, tl}]
 

to get an execution time of 2.04 seconds for the same function call: `TimePropagate[Exp[-Abs@#] &, {-3, 3}, {0, 0.1, 0.1}] // AbsoluteTiming`

A speed-up of almost 3 times.