El segundo lo que hace es lo siguiente, un for que se repite mientras *str no sea 0 (el terminador de cadena) ya que *str se evalua a true si el caracter al que apunta str no es 0. El for adelanta una posicion de la cadena en su incremento (al ser del tipo char).
Si la comparacion es verdadera (entra al for por decirlo de alguna manera) se le asigna a *str el valor que devuelve la funcion toupper de justamente el caracter que haya en *str.
No se si me explique muy bien pero no hay demasiado, son 3 lineas jeje