Let's start from the inside out
self.topics().reduce(/* code... */, 0) - this is calling Array.prototype.reduce() on the array stored in self.topics. This function works on a collection and reduces it down to a single value - in this case, it's count + (topic.selected() ? 1 : 0), so it returns the count of selected topics. The final part, which is the zero passed last after the counting code self.topics().reduce(/* code... */, 0) is the initial value of the count. So, it's start from zero, count each selected topic, return the result.
ko.computed(function() { /* reduction code */ }); is creating a computed observable which is an Knockout observable that automatically changes if any observables it is relying on change. In this case, this is self.topics - any change to those (like adding/removing them) would cause self.currentlySelected to be recalculated, so it would always display the...currently selected items. Their count, more specifically.
.reduce?.computed?