If I build a Joomla! site (J!3) without SEF, can I enable it 'after the fact'?
Will I have to do a lot of extra work?
What if I'm using sh404SEF - can I install and use this on Joomla! site that already in production, but not using SEF yet?
Technically, you can start the website without SEF enabled and can enabled it later. Enabling the core SEF functionality does not involve a lot of extra work. It is only enabling the SEF options in the global configuration and renaming the htaccess.txt file to .htaccess, if you want to enable also URL rewrite to remove the index.php from the urls. There are plenty of tutorials on how to achieve this.
As part of the extra work you mentioned, a piece of extra work could be considered some specific naming for the urls you will have after enabling SEF. For example you may decide that for some particular pages you want a different or shorter url, therefore you will have to rename the menu-item alias, or the article alias.
SH404SEF, you can install it and enable it at a later time as well. The extra work here will involve the configuration of the component and probably customization of the urls.
Finally, considering how google will treat your website URLs, if you enable SEF in a short period of time, then Google won't have the chance to fully index your site pages and their URLs. But in any case, after enabling SEF, Google sooner or later will update its index with the new URLs, but even any non-SEF urls will continue to work and direct users to the corresponding SEF urls of your website.
You can enable it after the fact, but be very careful when doing so. I would strongly recommend backing up your website before installing any SEF component.
If not done properly, activating sh404SEF on an already established site can have the opposite effect of what you are trying to achieve. Why? Consider the points below:
When you activate your SEF component it will change your URLs. If your SEF component doesn't map (redirect) visitors from the old URLs to the new ones you will lose SEO rank and get lots of 404 errors.
SEF components can be complicated (at least for me) and proper mapping (redirection) of old urls to new ones can be a pain.
Make sure you thoroughly research your SEF component before installing it. Sometimes links will be created differently to how you would expect. For instance, I believe that sh404SEF doesn't use menu structure to create the url. It instead uses the category structure to organise(Br.E) the way the URL is made (please correct me if I'm wrong).