1. The LIfecycle template determines from which states Revise is possible, regardless of permissions. Revise can only be to a single state from any start state.
2. Revise permission is given at the starting state. Because Revise essentially "creates" a new Revision, the Create permission at the resulting state is also required. For the OTB Basic lifecycle (simple), users are generally given Modify / Modify Content at In Work, so giving Revise at Released allow Check Out at the resulting In Work state after Revise.
3. For more complex lifecycle templates (e.g. two phase), Revise will generally end at a state which is not the first state and Create is needed at this state. Note: There is no way to directly create a new object at a state that is not the first state.
4. In general, Modify is required after Revise, so it should be planned that appropriate users can Modify at the resulting state. You may want to limit who can Modify by state (e.g. Groups or Roles).