I'm confused on what the best approach is when writing a game for the iphone. The game will be rendered with OpenGL , but im curious when creating the Start Screen, Menu's, High Score page, etc. Do you do all of that with OpenGL or do you create additional UIViews and use the UIKit?
I don't think there is a right answer for this. I personally use opengl for everything, for example in menu structures I use textures for the text. I guess it depends on what you want to display, I think it would be easier to create a custom look and feel that goes well with your game if you stick with opengl.
I've heard contradictory things about this. I've heard it's slow when you render UIKit over the OES.
I say, if you see another app doing it that performs okay, follow suit.
Some of the more popular games do everything in OES - e.g. Rolando. Maybe it's best to follow that pattern.
I don't think there is a best approach. If you have the time to code up menus and high score tables in OpenGL the you have a lot more flexibility - you could for example have a 3d animation going on in the background.
If you code menus, high score tables, etc. using standard UIKit views and switch out the OpenGL view while they are shown then this has the advantage that it's very quick to code (esp. if you took the time to learn to use Interface Builder), but it is inherently 2d. Even though you can still use custom button graphics and fonts to make it look less like a business app, it's still going to look less polished compared to other games in the app store.
What you don't want to do is to layer a transparent UIView over the top of you OpenGL view - this will be very slow.
I personally use Interface Builder generated views to get stuff like menus in while I'm building the rest of the program. The intention is to replace that with OpenGL animated code later. In the end though, it's really down to how much time you have available.