Hi Krzysztof,
Ok, I now have taken a look at your UX, looks good to me. Still, you can use infinitive scrolling, but I guess in this case that would be hard to implement, and not really adding much performance.
I didn't look at your code at all. The performance was quite alright on my system, but that's not really helpful. (developers tend to have hefty machinery;) ). I don't know if you used the trackBy option? That would help.
If you did, and performance is still subpar, We can have a look at your actual code, and see what's the best way.
Is some cases, a bottom-up approach is the fastest. Let each 'item' toggle its own visibility. (by directly manipulating the DOM, without angular involvement)
To answer your question about observables. They will do nothing for your performance. Perhaps make it a tiny bit slower even. (adding an abstraction layer tend to do that, it's just extra code that needs to be run)
They will help in simplifying your logic. Making it easier to reason about.
Regards
Sander