i am not sure when to use what in every situation
That's because there is not a simple answer I'm afraid The answer varies depending on the situation
Vertical margins will collapse between certain elements so their effect will be dependent on what went before and what follows after and what type of element it is and what properties it has been assigned.
If you use a top margin on an element that clears a float then it will appear to have no effect because the top margin will already be automatically changed so that it clears the float as margins of static elements stretch under the float and reach the top of the original containing block as though the float was not there. In this case padding top on the cleared element would provide you with the extra space required or indeed applying a bottom margin to the float above.
Vertical margins of certain elements do not collapse however so if you are using floats or inline-block elements then their margins are fully applied without collapsing
Inline elements do not apply vertical margins so they are no use and although vertical padding has an effect on the inline element it will not affect the line-height of the element and thus not change the flow and will just spread out over what is in the way.
As a general rule for static elements using margin is the preferred method to make space but you do need to take into account margin-collapse, although in most cases that is what you want.