How can I add collisions to my placement system?

If I’ve read the post correctly, you’re having trouble with the collision and surface placement aspects of the system. For the object to be correctly placed on the side, you’ll need to use normal vectors. You can use Raycasting.

As for the collision, you may use the function object:GetTouchingParts() and check if the tables length is greater than one:

if (#object:GetTouchingParts() > 1) then
	-- this means you can't place the object.
	-- do what you gotta do here like:
	-- object.Color = Color3.fromRGB(255, 0, 0) -- red

	return
end

If don’t understand, you can follow a tutorial on the devforum (by EgoMoose) or a multi-part series (by zblox) There are many tutorials out there, just find one which works for you.