Never, never, never and never use a blank before one those punctuation marks, except (except) if you're writing in the internet (web, email , you name it) and your sentence ends in a webadress like http://german.stackexchange.com .
But there are other punctuation marks, which have other rules, as Em1 points out in the comments: Parenthesis do have space on the outer side, but not on the inner side, and if nested, there is no space between them, and not to other punctation marks:
foo ((example) bar (baz)), foobar
For the dash - we have space before and behind. For the ellipse of triple dots, …, the sentence end is omitted if it is just a dot. Before the ellipse, you put a non breaking space, to avoid it being placed at the beginning of line. Else, it is threatened as what it is replacing.