Primero que nada creo que es importante que todos entendamos lo que es un strand, se le suelen atribuir 'propiedades mágicas' y en realidad es bastante primitivo.
Un strand no es más que
1 curva por partícula (es la expresión mínima de una curva de modo que sea ligera), generalmente se definen mediante un array (lista) de coordenadas 3D (los vértices de la curva) en un atributo por partícula llamado StrandPosition (hay otros atributos relacionados a strands, pero éste es el principal).
Con eso aclarado...
1) Dado que cada tramo del strand está definido por un vector de coordenadas en el atributo strandposition, podemos añadir gradualmente cada tramo de modo que el strand crezca gradualmente.
Otra opción es montar la espiral mediante simulación y usar los strands para trazar el recorrido de la partícula (como el último vídeo). En ese caso cambia todo, la forma de definir el movimiento en simulación pasa por usar fuerzas en lugar de manipular directamente la posición de los objetos.
En el ejemplo último usé una fuerza vertical para que la parícula suba, una tangencial de forma que giren en torno al punto central, una fuerza de atracción para que no se separen descontroladamente y por último un drag para controlar la velocidad (todo en los screenshots del enlace).
2) Esta es difícil porque las curvas de un wireframe no siempre son continuas y un strand es una curva continua por cada partícula, por lo que para 20 lineas necesitamos 20 partículas... y si una se bifurca necesitamos una partícula adicional para el nuevo tramo. Todo es posible pero no sabría decirte sin probar nada ni liarme a hacerlo, vaya