Going to a larger card is trivially easy. Just us SDimager to read it to a file on Windows (and that, incidentally, provides you with a backup), then use SDimager to write it to the new--larger--card. The final step would be to either expand the Linux root partition to use the additional space, or create a partition to go there.
Moving to a smaller card is more complex. The first step would be to shrink the partition(s) to make the actual space to be moved smaller than the new card. You would probably have to use something like dd to copy the partitions involved to a new card, though I think there are means to shrink partitions using various tools. (I wouldn't mind having a good "cookbook" for that process myself.)