Hey guys! First post here, so if I'm doing anything wrong, please advise!

I'm very new to scripting but really wanted to learn, and I've been trying to make a script that every now and then, a water droplet falls from a initial position and then vanishes when it touches the ground. Right now I've done this, but I've got some problem with the MeshId. I wanted that Mesh to be created and then falls like a droplet. Any tips on how should I proceed?

Plus, may I be advised for what should I study to make a line in the script so the droplet vanishes when it reaches a certain position? I have no idea what should I do to make that happen, so if someone point out what I should know to make it happen, I would appreciate!

Right now my code looks like this. Plus, could someone explain better the uses of Vector3 and CFrame? I can't really see the difference between both, and can't find good explanations.

local Mesh = Instance.new("MeshPart", game.Workspace)
while true do
	wait(5)
	Mesh.Size = Vector3.new(0.05, 0.05, 0.05)
	Mesh.CFrame = CFrame.new(-168.313, 43.486, -0.043)
	Mesh.Anchored = false
	Mesh.MeshId = rbxassetid://932752825 -- This is where the problem is
	Mesh.BrickColor = BrickColor.Blue()
	Mesh.Transparency = 0.2
end

I've tried doing something similar and that went just fine, here what I've used. However, if I use a value greater than 2 in "wait", the script doesn't add any part at all and doesn't show anything in the output. Any thoughts?

local part = Instance.new("Part", game.Workspace)
while true do
wait(2)
	part.Transparency = 0.2
	part.BrickColor = BrickColor.Blue()
	part.CFrame = CFrame.new(0.5, 15.5, -9.75)
	part.Size = Vector3.new(2, 2, 2)
end

Thanks, guys!