No, if your bands all have the same resolution, no resampling will occur when using gdal_merge.py. So it's perfectly fine to use it.
As for "Pansharpening": Since the process aims to turn a low-res color image into a high-res color image with the help of a high-res panchromatic image, naturally resampling is involved. In a common implementation this would be an upsampling of the color bands to the resolution of the panchromatic band as the first step. However the resampling algorithm only partially determines the result, as after upsampling, other steps follow (aligning, intensity transform, substitution).
By default gdal_pansharpen.py uses Cubic resampling. However you can change the resampling algorithm with the -r parameter:
-r {nearest,bilinear,cubic (default),cubicspline,lanczos,average}