@drwaz
Lookup columns are more of a user interface concept from a SharePoint list. They give users more information than an ID and it provides an option to click on the value to see the related record. If you need to use a list from the SharePoint interface, this is a nice thing. Your goal is to get people to use your app, not the list.
So, having an ID only is much easier to design formulas for than it is to work with the lookup column.
Disadvantages come from when you want to have multiple values in the lookup column. This is something you can do easily from the lookup column perspective. From using just an ID, then you have the decision to make as to if you will now create another list to have a one to many relationship, or if you will utilize a text column to concatenate your "array" of ID's together - both work just fine, but it is an added step that may outweigh the advantages.
As for brining them into your app, it is usually just adding a column in your Items properties to get the related record.
IF you only need the related record's related value (i.e. if you relate to another list by Title and you only need the Title), then the Lookup column is best because you will have the value you want without any extra work.
e.x. your Items property - yourList
Now, you have in your table a column that is the lookup column that has a record with an Id and Value. The ID of the related record and the related column value (from above...the Title).
So, there is no other work to do.
IF you need the full related record, then your Items property becomes: AddColumns(yourList, "relatedRecord", LookUp(otherList, ID=relatedColumnID))
Of course, the above is true for even a lookup column. IF you need the full related record, you still need to do the above - AddColumns(yourList, "relatedRecord", LookUp(otherList, ID=LookupColumn.Id))
So...not a huge advantage.
And of course the above is all compounded if you need to relate to multiple records.
So, the real answer is...it depends! You need to factor each choice into your app design and highly consider the performance implications. If getting the related value column is only important for displaying lists for example, then the Lookup column is a good choice and then do the lookup of the entire record on demand as needed. Because, if you have just the ID in the list and you need to just display a related value column (as you would have with the lookup column), then you are now forced to Add a column and do a lookup on each record. Sometimes that is needed because you need the full record, but if not, then you are dragging down your performance.
Either way, you mention collections - avoid using them unless there is an absolute need for one - otherwise you will be doubling the performance hit to your app.
I hope this is helpful for you.