For example, the Barcode Scanner app takes up:
Total: 0.96MB
Application: 0.92MB
Data: 40KB
on the phone. When I move it to the SD Card, it changes to:
Total: 524KB
Application: 484KB
Data: 40KB
How come it changes?
Like Bryan says (I can't comment so had to add another answer...), it doesn't move the whole app. The size given after the move is the bit still on the internal storage - it doesn't give any size for the elements that have beend moved to SD.
So in answer to your question, the app doesn't get smaller, just amount of internal storage used gets smaller.
As far as I know, it moves as much of the app as it can from the internal storage to the SD card. So for instance, databases, images, or other resources would be moved over. I do not know the exact details of how it works.
See Where can I find my Android applications? on app space distribution and locations.
See also What are the drawbacks of moving an app to SD card?
There is no effect on the application performance so long as the external storage is mounted on the device. The .apk file is saved on the external storage, but all private user data, databases, optimized .dex files, and extracted native code are saved on the internal device memory.
So odex
file of any app still remains and takes space in the internal storage at /data/dalvik-cache
.