The new disk would have to be the same size or larger than the original, and the partition created on the new drive would be the same size as the original (so it would have unused space at the end if the new disk was larger), but you should be able to expand the partition/filesystem to fit the drive once you booted it up. The disks should have the same geometry though (sector size, etc.).
The image will also be the full size of the original drive unless you compress it. Not the size of the used space on the original drive, but the size of the drive itself. So if you image a 100 GB drive, you'll get a 100 GB image, even if there's only 5 GB of data on the drive.
What's on the drive is of no concern to dd. It could be encrypted data, Linux partitions, Windows partitions, OSX partitions, or nothing useful at all, it doesn't care. It doesn't mount the filesystem or try to read any files, it just does a raw byte for byte copy of whatever is on the physical disk.
There are other utilities as well - partimage, clonezilla, etc., some of which might be more intelligent about restoring from the image and auto-expanding to fill the new disk. dd is a nice simple tool that you'll find in any live Linux CD/DVD/USB though. Just don't mix up the if and of parameters! And you should test it to make sure it works in your application (make an image, swap drives, restore the image, see if it boots up properly) before calling it good.