Generally you use the RigidBody.MoveRotation() call when rotating objects that have physics associated with them. This gives the physics system a chance to respond.
Yes, but it just staggers, but I need it to say that it would rotate the project by 30 degrees and become
You can use a coroutine or Update() to move it gradually over several frames. There's lots of coroutine tutorials out there in Youtube land. Coroutines are the basic way you cause "stuff to happen over time" in Unity.