Exacto, la condicion es esta:
so es un objeto tipo string, que se le ha seteado el nombre del so pasado en minúscula. indexOf es un metodo del Objeto String que devuelve un entero. Que da como resultado la posición del string pasado como parámetro utilizando el string del objeto so. Si el parametro string pasado no esta contenido en el objeto so, entonce este devuelve un -1. El utiliza un mayor o igual a 0, porque la posición comienza desde 0 y si indexOf retorna un valor igual o mayor a 0 es porque se coincidió con el objeto so. Si coincidió devuelve true de lo contrario false.
Cambiando de tema, Expermicid no debiste implementar la logica que verifica cual SO es el actual, directamente desde la parte del cliente. Lo ideal es crear una clase que realice esa lógica. Ya que andas violando algunos principios y por lo tanto estas utilizando malas practicas.
Lo ideal en este caso es utilizar el patrón de diseño Factory Method.
Saludos.