Q:

Twin subscribes block forkJoin subscription

Here is the test, in the ngInit of any angular component:
console.log('a');

observableFoo$.subscribe(x => console.log('b'));
observableNotFoo$.subscribe(() => console.log('c'));

forkJoin([
  observableFoo$,
  observableNotFoo$
]).subscribe(([foo, ntFoo]) => {
  console.log('d');
});

The ObservableFoo$ will fire 2 times, that is behaviour that I need, this observable will observe a value that can quickly change during the initialisation. 
result is : 
a
b
b
c

And d never log.
So, I first tried to do the same, but with only ObservableNotFoo$ just to be sure I can forkJoin on a single Observable (useless but it works), then I tried the same thing with ObservableFoo$ and it's not working.
It seems forkJoin just doesn't accept subscriptions that will fire twice. Is that so? Seem's really strange...
** EDIT : **
observableFoo$ = initFoo(this.id); 

observableNotFoo$ = of('notFoo');

initFoo(id: string): Observable<any> {
 const content = this.store.select({
      filterBy: entity => entity.id === id
    }).pipe(
      flatMap(v => {
        const value = v[0];
        if (!value) {
          return httpRequest.get(this.baseUrl + '/' + id).pipe(map(val => {
            this.store.add(val);
            return val;
          }));
        }
        return of(value);
      })
    );
    return content;
  }
}

A:

In this Scenario, the Observables are not completed. ForkJoin is usually used for the observables that are completed i.e HTTP requests. 
So For this scenario, you can use CombineLatest.
combineLatest(observableFoo$, observableNotFoo$).subscribe(([foo, ntFoo]) => {
    console.log(foo, ntFoo);
})

for more information visit : combineLatest

