hello to all of u in this forum, i am a newbie on VisC++, so please help me to understand about something called macro & preprocessor

1. what is the macro WIN_32_LEAN_AND_MEAN does to program ?
2. is there any aim to write macro definition with '_' ? i mean something like this
#define __Entity_H__
3. what is the precompiler #pragma once does to program ?

i would very appreciate if someone would answer my question