• A stain is a mark, caused by a liquid. If you spill coffee on your shirt, it will stain your shirt.
• A smudge is a small mark, usually caused by by something more solid. If your shirt's sleeve brushes dirt while gardening, you might have a smudge on your sleeve. Likewise, if you touch your laptop screen with your finger, you might leave a smudge of finger oil on it. In addition, you can 'smudge' something liquid, such as if touch a painting before it dries, you may smudge the paint.
• A fleck is something that is more mobile, such as a fleck of dust or dirt. If you lightly brush it off, it will go away. If you are removing dried paint from your walls, a fleck of paint might land on you, but you can brush it off your shirt lightly and it will not leave any stain.
In your sentence "Construction workers left (Smudge, stain or fleck) of foam on my floor, I have to clean it up.", I am not sure what exactly the foam is like, but I believe in any case you can just say they "left some foam on my floor" and that should be fine. You don't need smudge, stain, or fleck in this case, unless the foam itself stained your floor.
I'm a native English speaker and a community teacher on iTalki, so if you want any practice speaking English, feel free to check out my profile https://italki.com/adrian.linglish