startActivity will start a new activity and not care when where and how that activity finishes.
evidently
startActivityForResult waits for callbacks when the started activity decided to finish
startActivity() will start the activity you want to start without worrying about getting any result from new child activity started by startActivity to parent activity.
startActivityForResult() starts another activity from your activity and it expect to get some data from newly started child activity by startAcitvityForResult() and return that to parent activity.
Check this link - Activity#startActivityForResult(Intent, int)