The most important thing to be aware of with portals/worldportals is that only 4 portals can be onscreen at once. You can have more if they are closed, but this is the maximum supported by the engine. When this occurs, you'll get wierd visual errors (showing rooms you shouldn't be able to see) and the console will spam errors about exceeding the maximum number of portals. The white-portal thing I believe happens based on how far you are away from the portal, and is based on how powerful your computer is.
There are 3 main ways to mix logic together: logic_coop_manager (simplest but only handles 2 inputs), logic_branch with logic_branch_listener(handles up to 16), and math_counters(the way PTI does it, it's tricky to setup right though). I'll give example inputs/outputs with catchers and doors, but it'll work with anything.
To use a logic_coop_manager, place the entity and configure the starting state for "A" and "B". Use the SetStateATrue/False for one catcher, and use SetStateBTrue/False for the other. OnChangedToAllTrue Open the door, and Close OnChangedToAnyFalse.
For logic_branches, place one down per catcher/input and give a unique name. Use the SetValue 1/0 to set the state (you can also use these by themselves with the Test input to get an OnTrue/False output depending on the state, with the ToggleTest/SetValueTest first toggling/setting the value before firing outputs.) Place one logic_branch_listener and give it a list of all the branches it should listen to (feel free to double up with multiple listeners on the one branch if needed.) Like the coop_manager, it has a OnAllTrue output to Open the door, but an OnMixed output used to Close the door.
For math_counters, set the Minimum value to 0, and the maximum value to the number of input items. OnPowered the catchers should Add 1, and OnUnPowered Subtract 1. (You need to make sure a device can't trigger these outputs multiple times, unlike the other methods.) OnHitMax Open the door, and OnChangedFromMax Close the door. All the PeTI items are setup this way, with a $connectioncount (plus $connectioncount_polarity for funnels) setting the max value for an internal math_counter.