1. Main issue is to use preinitialized arrays and resize arrays sequentially (adding reasonable(optimal) number of elements at each array resize). Don't recommend to make it at each loop iteration. Use "replace array element" function. It's faster. Local variables using is rather tricky and slow.
Don't think about shift registers when realizing ways of passing data. Think of LabVIEW way of passing data.
2. Yes, generally.
These issues are described in .pdf/printed LabVIEW manuals and in LabVIEW datastorage formats articles. Some more deep issues are described in LabVIEW CIN reference manual. Search ni.com and developer zone for articles as well.
Learn this also using "LabVIEW Advanced Courses" or course kit's available from NI.
Sergey
Sergey