1. When is "end" and a blank line needed at the end of scripts and when is it not?
"end" is actually never needed.
2. I'm still unsure what I have to do to use createentity. Do I place the script box somewhere on the screen that the player has to walk into and the enemy appears?
Yes. The script only activates when the player touches it.
Do I have to have it trigger in another room? Or have people modified ved to use it?
These won't work.
3. I've seen a player level make use of custom tile sets/music. What is possible to change this way? (everything? or just tile sets and music?)
Well at the moment you can change graphics, sounds and music.
By graphics I mean any graphics shown in game.
You can change how the crewmates look, you can change the huge elephant, anything really.
Assuming that the folder is packaged with the level, how would I get the game to read off of the custom stuff?
C:\Users\USERNAME\Documents\VVVVVV
Your level folder is "Documents\VVVVVV\levels".
Instead, place the graphics in "Documents\VVVVVV\graphics", the music in "Documents\VVVVVV" and the sounds in "Documents\VVVVVV\sounds".
Here's an example of custom graphics:

Hope this helps!~
I'm not as proficient in internal scripting as Alexia/Shiny,
b-but it's easy to learn
i totally havent been using it for ~2 years
See Alexia's tutorial, linked above. (You can also use 'say(-1)' to load an internal script but that's buggier.)
say(-1) isn't really buggier unless you use:
say(-1)
changeplayercolour(green)
Which is incorrect (but works)
say(-1)
text(1,0,0,4)
say(4)
changeplayercolour(green)
endcutscene()
untilbars()
loadscript(stop)
This should work fine.
Putting custom music in the game involves messing with the original vvvvvvmusic.vvv file, which is really complicated and goes way over my head. There's a tutorial here, though.
Actually, it's not that complicated if you have access to a linux environment, or you're using Windows 10 (after the anniversary update).
I'm using Windows 10 and I can do it easily.