1. If a single "if" condition is false, the program won't even go inside the block. In your case, if obj_one does not exist, the rest of the block won't be dealt with. You can try this easily with show_question, for example.
if show_question("Yes or no?")
if show_question("Again: yes or no?")
2. I believe what matters more than size in this situation is the complexity of the mask. Size is also an issue, since bigger objects have larger collision masks, but that's not the main thing here.
Let's say you have two sprites and you use a simple shapes as their collision mask. If the masks are rectangles or circles, doing a collision check with them will be fairly simple, since basically we're just checking if certain points of the other mask are inside a rectangle or circle. Now, if you change the collision masks to be a precise and the masks have a complicated and irregular shape, the check won't be as easy, and will take more time.
I haven't programmed a collision check algorithm that would check if there's a collision between two objects that have collision masks of an arbitrary shape. What I did make a few days ago was an algorithm that checks a collision between two rotated rectangles, and even this is already a slower operation than checking if two non-rotated rectangles would collide. I could imagine that using shapes that may not even be convex takes even more time.
In your question, choosing the bounding box (a box that contains the full sprite) as the collision mask would be faster than the precise one, despite the fact that the box is bigger than the precise mask. It's just that much faster to check the rectangle collision.
Edited by Koaske, 12 July 2012 - 01:09 PM.