Поток - это последовательность команд. Когда программа работает в нескольких потоках, команды выполняются псевдопараллельно.
Поток данных - это специальная абстракция, которую можно описать как железная дорога. Когда вы записываете данные, вы отправляете поезд с одной станции, когда читаете данные, вы встречаете поезд на другой станции. Соответственно, потоки данных можно объединить (выход ко входу).