At first sight, i'd say that if you declare the variable/object inside onCreate, you only will have it available in that method. (Local scope variables)
Creating the variable outside and initialize the variable/object inside the first method that is executed (onCreate) you will have a whole-class variable that you may use wherever in the class, just be careful to protect the access to it with if(var != null)
to avoid NullPointeException. (Gloabal scope variables)
I personally do not prefer any of two, I just use it properly for every case, due te second case retains memory for a longer time, and that is unnecessary if you use that var in a local scope only
For example, if you need a MediaPlayer that plays at start of an Activity and stops at the leaving, you'd better to declare it globally, in order to initialize it in onCreate, make it play in onResume, make it stop in onStop and release it in onDestroy, so:
You only initialize the MediaPleyr once (onCreate)
Every time you re-enter the activity (onResume) the MediaPlayer starts and does not need to be initialized
When leaving the Activity, the MediaPlayer stops (onPause)
When Activity no longer needed the memory is released, so no "IllegalState" exceptions or object leaks (onDestroy)
*You also could do all that with a bunch of listeners (onPreparedListener, onCompletionListener, ...), but this is just another way, and have slightly diferent behavior