Код, скомпилированный для 3.0, не будет работать на устройстве с более ранней версией ОС.
Код, скомпилированный для 2.2.1, по большей части должен работать на 3.0. Но вы несете ответственность за тестирование своего приложения, чтобы убедиться, что оно работает на 3.0.
Если он работает на 3g, то он должен работать на 3gs, но в идеале вы должны проверить на всех целевых устройствах, чтобы убедиться.