1)
Субъект даже не содержит значений.
Все значения, полученные до подписки, не будут видны подписчикам.
2)
BehaviorSubject содержит последнее значение и должно содержать значение.
Подписчики всегда будут получать последнее значение.
3)
ReplaySubject содержит значения x, но не обязан.
Подписчики получат последние значения x, если они были выпущены ранее. В противном случае они получат 0 - х значений.
Они разные и не могут быть изменены между собой без потери функциональности.