A smudge is usually a mark caused by something "dirty" being smeared across the surface of whatever it despoils the appearance of. Usually, a smudge-causing "contaminant" is some kind of "paste" - it can be a (thinner) "liquid", or a fine "powder", but it has to be something wiped/spread across a larger area than the initial point of contact. Because they normally involve wet/sticky contaminants, smudges can often be made worse by rubbing them (they just spread out more, so they get bigger). But if you get a smudge of [damp] mud on your trousers, say, you might be able to brush it off when the mud dries. Smudges are always surface-based.
A stain is more likely to refer to a contaminant causing a (possibly permanent) colour change in the thing despoiled. You might thus have a stain on your white shirt caused by a few drops of red wine - which if you're lucky you can rinse or wash out. But if you get smudges of (fine) icing sugar on your black dinner-jacket, or smudges of cream on your chin, you can usually brush or wipe them off without needing to resort to any kind of liquid-based cleaning process. Also note that stains can be much larger. The entirety of a "stained shirt" may be discoloured (perhaps even consistently throughout its surface, if you washed it along with other clothes containing non-colour-fast dye). The less common "smudged shirt" would normally simply imply one or more localised areas of discoloration.