What is the difference between 对不起, 请问, 不好意思, and 抱歉 to express "excuse me" or "sorry"?
对不起 is the phrase for apologizing for anything, for generally saying sorry. This is what you would normally say in situation 2.

请问 means "may I ask...?"; it is used to introduce a question and not to apologize for anything. You can use this when asking for direction (situation 1). But note: because of what it means, it must be followed by a question (otherwise it sounds incomplete). Therefore you would not use it just to attract a waiter's attention – although once you have his attention you can use it to ask whether they have anything you particularly want.

不好意思 indicates that the speaker is humbly embarrassed about something; it is used e.g. to politely refuse a gift. Basically it's used when the speaker doesn't want to appear to be taking advantage of the other person's hospitality or goodwill.

抱歉 is less common than the others; it is like 对不起 but more formal.