Para lo primero que pides haría uso del producto vectorial. Si no conoces esta operación te dejo un link a la wikipedia:
https://es.wikipedia.org/wiki/Producto_vectorial
Podrás ver que el resultado de aplicar este producto es un tercer vector perpendicular a los dos anteriores.
Además, sabiendo que la forma cartesiana de un plano es del tipo Ax+By+Cz+D=0, donde A, B y C son las coordenadas de un vector normal al plano. De esta manera solo te resta definir en python una función que te pueda operar 2 listas. Estas dos listas son los dos vectores a operar, v y n. Te pongo un ejemplo de como definir esta operación, no con el vectorial sino con suma de vectores:
Fíjate que el return devuelve una lista, no un número. Puedes usar eso para operar entre vectores y que el resultado sea otro vector
Con el enlace que te he dado puedes hallar una expresión algebraica para calcular el producto vectorial y adaptar el código de arriba para ese algoritmo.
Con eso obtienes un vector perpendicular al plano en forma de lista ([ , , ]). Con la ecuuación cartesian del plano se puede ver que tienes A, B, C. Te falta determinar D. Te han dado un punto (x_o, y_o, z_o) que está en el plano, por lo que cumple la ecuación de este (A*x_o+B*y_o+C*z_o+D=0). Solo tienes que aislar D y podrás montar tu ecuación del plano
La segunda pregunta está mal formulada. No se puede interesacar un vector con un plano, pero si una recta cuyo vector director sea W con un plano. Dando solo un vector director no puedes determinar univocamente una recta. Reformula esa pregunta y a ver si te puedo ayudar.