A Simple and Straightforward Explanation:
Subarray: It always should be in contiguous form.
For example, lets take an array int arr=[10,20,30,40,50];
-->Now lets see its various combinations:
  subarr=[10,20] //true
  subarr=[10,30] //false, because its not in contiguous form
  subarr=[40,50] //true
Subsequence: which don't need to be in contiguous form but same order.
For example, lets take an array int arr=[10,20,30,40,50];
-->Now lets see its various combinations:
  subseq=[10,20]; //true
  subseq=[10,30]; //true
  subseq=[30,20]; //false, because order isn't maintained
Subset: which mean any possible combinations.
For example, lets take an array int arr=[10,20,30,40,50];
-->Now lets see its various combinations:
  subset={10,20}; //true
  subset={10,30}; //true
  subset={30,20}; //true