The best way to understand it is to realize that you aren't moving anything around. You are not making a big routine for moving snake-like beams of color that will blend. You are in fact, drawing all pixels on the screen 1 by 1, at the same position, every cycle. The only data that changes is what the RGB value of this pixel will be.
If you were to do this:
For X = 0 to 319
For Y = 0 to 239
Color 255,255,255
DrawPixel X,Y
Next
Next
You would be drawing a full 320x240 screen with white pixels.
Now, the entirety of your plasma effect rests on changing the "Color 255,255,255" command for someting like "Color (sinetable),(sinetable),(sinetable)"
If you use the same sinetable values for all three colours, you'll just be fading the screen from black to white, but with different table 'speeds' there, the colors will desynchronize and you'll get plasma. Play with the math for your sinetable and you get interesting patterns.
For example, this is the bog standard plasma:
While Poop Stinks
SineCounter = SineCounter + 1
For X = 0 to 319
For Y = 0 to 239
Color (128 + (Sin(SineCounter) * 128)), (128 + (Sin(SineCounter * 0.9) * 128)), (128 + (Sin(SineCounter * 0.8) * 128))
DrawPixel X,Y
Next
Next
FlipScreen
Wend
See this will do the Sine stuff in realtime, but generally people tend to precalc these into arrays for simplicity's sake and more speed. What will make the three colors move 'separately' is that I modify the value of SineCounter in the Color command (* 0.9 and * 0.

Was that clear? Prolly not...
