Linked versus embedded
There are 2 types of SmartObjects in Photoshop: embedded, and linked ones. An embedded SmartObject is stored into the document itself, while a linked one is stored as separate file. Such file can then be placed into different Photoshop documents. Compare it with how InDesign (or Illustrator) works with placed images. The image is a separate file that gets placed into the document. Once it's placed you need to make sure you keep it in the same location, or the application will not find it anymore, and ask to relocate it after you go back to your document.
If you edit the image, and go back into your Photoshop document, the image will have a yellow triangle next to the layer's name. You'll have to select the layer, and select the update option from the dropdown menu in the Properties panel when you click the yellow warning triangle. If the document is still open while you've done the edit, things will automatically be updated. Each time you modify the linked SmartObject file, and you open a document where you have placed this SmartObject in, you'll see this yellow triangle and you'll need to update it.
In the image below I'm showing you how I usually work on projects that involve designing a couple of different pages for a web site. Unfortunately I can't show things with real examples since I can't reveal anything of the current projects I'm working on, but I hope you'll get a pretty good idea from my simplified document schemata further below.
If the different pages of a project I need to design are rather complex, then I decide to save a separate document for each page. By complex I mean that the file is becoming harder to manage (heavy in files size, in the amount of layers, Layer Comps etc.), and so updating a design would take more time with all of the pages stored into one file, compared to when they would be stored into separate files. Ever since I'm able to work with linked SmartObjects I'm choosing this option way more often, because the advantages are obvious. I don't have to worry anymore about repeating actions, where I need to update the same item across different files.
Every time I update items that reoccur on each page, such as header, footer, etc. I only have to update once and the only thing I need to do next time I open the main Photoshop file, is selecting the layer that shows the yellow warning triangle, go to the Properties panel and select update from the dropdown menu when you click the yellow triangle.
Layer Comps are a handy feature to use, especially combined with linked SmartObjects. In the example above the header is a separate (linked SmartObject) file that has 4 different Layer Comps. This file is placed as a SmartObject in every page document that needs this header, but each in a different state. In other words each with a different layer comp applied. In the example below the Layer Comp 1 is applied into the document. In case you keep all pages in 1 document and you want to show this header in its different states, a state for each page, then you'll need to duplicate this SmartObject layer and apply the proper Layer Comp for each one. You can do this in combination with Layer Comps in the document itself (if you can follow me?). I do this when I decide to keep things all in 1 and the same document. Then you could keep the SmartObjects embedded but still use the Layer Comp function to show different states of headers, navigation bars, menus etc.
In the image above, you see PAGE-1.psd where I use Layer Comp 1 on the 'HEADER.psb' SmartObject. You can give the layer any name you like. In my document, I just name the layer 'header'. Usually I use all caps for SmartObject layers, and I also use the same name and all caps for the SmartObject 'psb' filenames, just to visually separate them from my main Photoshop document. You could of course also store them into a separate folder, named 'Assets' or 'Imports'. It's important to keep things organised, so you don't loose the overview.
Looking into the linked SmartObject file HEADER.psb, you'll see that I have created 4 Layer Comps, where I made sure the comp is only applied on the Layer Styles. What I did here is applying a white Color Overlay on each circle, but hide or show this effect on the appropriate layer for each comp. Then when you place this item into the different pages I just apply the corresponding Layer Comp. Pretty handy for navigation bars don't you think? Adding a button? Changing a color, text, whatever? Open 1 file, do your edit and then it's a matter of clicking an update button.
Nesting linked SmartObjects
It doesn't stop here though… Say you have a SmartObject that uses different Layer Comps for an item that appears somewhere in the content, but to create each different comp, you need a whole bunch of layers again since it's a complex drawing or a complex layout. To make it manageable it's better to create each one of those in a separate document. No problem, you can place linked SmartObjects into SmartObjects. So you can nest them. It's what I did for a project I'm working on right now. I have to create these complex drawings. Each drawing is a separate file that is placed into different SmartObjects, and these SmartObjects are again placed into different documents. So if I need to update one of the drawings, I open the drawing and do my edit, and save it. Then I open the SmartObject files where this drawing is placed into and click the update option. Later when I open a main Photoshop document I'll yet again click the update button for the SmartObject that was updated. Updating like this is only a small hassle really. It would be way way more work to update my files one by one, if I need to manually do this, by copy paste or whatever.
Convert to linked
Some of you may not be so familiar with SmartObjects and wonder how you create such object in the first place. Well, it's really very simple. Usually you get to this point when you have most of your design ready in Photoshop, all nicely (I may hope so) organised in different (named) Layers and Layer Groups. With 'ready' I mean your initial design that you're about to show to your client. It might change a bit later, but everything is in place and you're at a point where you think it's a good moment to save a separate file for items that you know will reoccur on different pages, like header, footer etc. First make sure your layers for each item is organised into a Layer Group (folder icon). Then select the Layer Group (or the layer if it's only 1 layer), go into the Layers panel options menu and choose 'Convert to SmartObject' (or hold down the second mouse button to evoke the contextual menu and select it from there). In the Properties panel , click the Convert to linked button. Photoshop will show you a save dialogue box to save your file. Here you could choose to always store your files into the same folder of all your main Photoshop files, or you could choose to save them into a separate folder such as 'assets' or whatever works best for you. Just keep in mind that as soon as you change the location of the file later on, that you'll need to re-locate the file next time you'll open a file where the SmartObject file is placed into. Then you'll see a red question mark alert next to the layer, and you'll need to right click again in the Properties panel and browse to the file so the link to the file will be restored again. Also you can convert a SmartObject into a linked one at any time, or convert a linked SmartObject into an embedded one is no problem as well. Then of course the link isn't there anymore and the edit will only be applied into the document it is placed into.
That's it! I hope you've found this helpful, and hopefully it gives you ideas on how to save time in your workflow.