Collision detection is a huge rabbit hole that you could devote your entire life to. So the question usually is what is the simplest thing you can get away with or can you take advantage of an existing library (use the collision detection in Chipmunk/Box2D etc).
Bounding box and bounding circle collisions are the simplest. You can use CGRectIntersectsRect() to check if two sprites' bounding boxes overlap. Bounding circles are easy too, just check if the distance between two objects is smaller than their radiuses. Then you just need to make some for loops to compare each enemy to each bullet, and the player to each enemy. Until you have hundreds of bullets and enemies on the screen, anything more would probably be overkill.
"But my sprites are not circles or boxes!", you say. Perhaps not, but it can usually be hidden very well. Nobody will complain if you make the shapes a little bit to small. People like being able to survive a close brush with death. Using rough approximations like this is actually a really common thing to do in games.