First, the similarities.
Both OverFullScreen and OverCurrentContext have the “Over” in their names, meaning that both modal presentation styles will not remove the views underneath the newly presented views. This is useful when you want to show a modal screen with transparency, which enables users to see through the previous content below the new content. An example of such screen where you want transparency are Loading Screens.
From the Apple documentation:
The views beneath the presented content are not removed from the view hierarchy when the presentation finishes. So if the presented view controller does not fill the screen with opaque content, the underlying content shows through.
Then, the differences.
OverFullScreen
OverFullScreen always shows the modal screen in full screen, regardless of the current context (the View Controller that has definesPresentationContext to true). This is useful for screens that always need to be in full screen, for example, Loading Screens or custom Alert Screens.
OverCurrentContext
OverCurrentContext, on the other hand, can display the modal screen in full screen or not. It displays the modal screen on top of the current context (the View Controller that has definesPresentationContext to true). So if the current context is shown full screen, then your modal screen will be shown in full screen too. Most of your view controllers will fall into this category. If you do not explicitly set definesPresentationContext to true, then most probably your modal screen will be shown in full screen. If the current context is not shown in full screen, then the modal screen will only be shown inside the bounds of the view of the current context. This can be achieved if you employ View Controller Containment, meaning you have container view controllers and then add child view controllers to the parent view controller.