Generally there's no difference between read from hdfs and s3 when spliting. S3FileSystem class (which is store class for s3 input) will use common location and offset to get s3 file block(use HTTP request, including location, offset info in header). More details, you can check code in hadoop release.
Yes, as same as HDFS procedure.
It depends on the workflow. If you read once, query many times, you may want copy files to HDFS which will benefit from local I/O. Otherwise you can just use s3 as your storage. S3 is more stable, has unlimited storage, though that maybe a little slower than HDFS. (I know Netflix uses s3 as emr storage for many cases, which works just fine as they say)
PS: S3DistCp can help you to do quick copy between HDFS and S3.