How come I have to do Resources res = getResources(); for a String Array, and not for a String in an XML file?
getString() is a method of your Context object (mostly an Activity but could also be a Service). The code for that method is:
public final String getString(int resId) {
return getResources().getString(resId);
}
Meaning getString() is just a convenience method that the Context class offers. In the end both calls do the same, namely retrieve a resource through the Resource object.
Would String[] planets = getStringArray(R.array.planets_array); not work?
No because Context doesn't have a convenience method to retrieve String[].
Do resources have more methods, namely for more complex cases like String Arrays?
Yes. See http://developer.android.com/reference/android/content/res/Resources.html. I leave if up to you to decide whether they are more complex than getStringArray.
is getString so simple it is fine to not need it under a resource?
Resource does have a getString(int) method: http://developer.android.com/reference/android/content/res/Resources.html#getString(int)
Where could I find a list separating what requires me to do Resources res = getResources(); versus what doesn't require that?
There's no such list. The JavaDoc for Context will tell you what convenience method you got: http://developer.android.com/reference/android/content/Context.html
Lastly, does getResources get me every single resource in my Android project regardless of what XML file it may be in?
Only if it's in a resource xml file. Layouts or Drawables can't contain String resources.