The concept of (un)used bytes doesn't exist on LVM's level. Whether a byte (or actually a sector) contains meaningful data or unused garbage is determined by the filesystem that lives inside the LV. The LVM doesn't know what a filesystem is. All it does is it takes a bunch of disks and combines them logically according to your instructions. It doesn't care what you will do with that combined volume.
This means that you're taking a snapshot of 500 GB of data. LVM doesn't understand which parts of this snapshot are meaningful and worth preserving and which are not.
What you want to achieve is possible at the filesystem level by imaging. Some software, like the free partclone, understands filesystems' structures and can create an image - essentially a sparse file that contains only parts of the filesystem that are in use. The gotcha here is that the target device has to be at least the same size as the source, because partclone doesn't adjust filesystem's geometry: all stored pieces must go into their original locations when the image is being restored.
So the plan would be as follows:
- Resize the source filesystem to 25 GB (this does not require resizing the LV!)
- Image it with partclone or something similar
- Recreate the LV on target manually
- Restore the filesystem from image
A variant of this would be to resize the filesystem to 25 GB and then send over the LVM snapshot. It will error out with "no space left on device" because you're still sending entire 500 GB , but that's okay, because only the first 25 GB of the volume will contain the filesystem.
Anyway, you'll probably have to adjust the fstab if these are bootable volumes, so be prepared for that.