Only one application With the exception of the operating system itself, only one application can be running at any giving time. (This may change in future as iPhone gets more memory and powerful processors)
Only one window iPhone give your application only one window, all of your application's interaction with user takes place inside this one window.
Limited access Your application only can read/write files from the part of iPhone's file system that was create for your application, this area is called your application's sandbox, and it is where your application will store documents, preferences, and every other kind of data that it may need to store.
Your appliccation is also constrainted in some other ways:
You will not be albe to access low-number network ports on iPhone
Other resource that need root or administrative access
Limited response Make sure any operation takes only a few seconds. If the user press the home button, iPhone goes home, and you need to quickly save everything and exit, if those operations take longer than 5 seconds, your application's process will be killed, regardless whether your application finished saving.
Limited screen size
Limited system resources
RAM Cocoa Touch has built-in mechanisms for letting your application know that memory is getting low, when that happens, your application must free up unneeded memory or risk beign forced to quit.
Storage
Missing Cocoa Tools The iPhone doesn't support
Cocoa Data
Cocoa Bindings
Garbage Collection
Some new stuff
Core Location To determine the phone's current geographic coordinates