First, you need to understand some things about the architecture.
The "light bulb" is auto-complete. Though most people regard it as a completion or syntax expansion mechanism, auto-complete is really a suggestion mechanism. It will suggest a variety of completions for you based on the word prefix under the cursor. That is all auto-complete does. It suggests a completion and provides you a mechanism to easily invoke that completion. It works with aliases, keywords, words, symbols, and the syntax expansion callbacks. Before auto-complete, those completions were all separate keystrokes and commands. Auto-complete brought them under a common umbrella with the intention of teaching users what SlickEdit is capable of. Now, many people just let auto-complete do everything and don't even know how to explicitly complete an alias, for example.
Syntax expansion is the workhorse. Auto-complete uses the display strings in the language specific SYNTAX_EXPANSION_INFO tables just for display, nothing else. Most of those display strings are just approximations of what syntax expansion will generate, because they don't know anything about your brace style, your indentation preferences, etc. etc. The code you found that does the expansion does know about your options and the context where the code is being inserted and does a lot of work to get that right for you. There is no substitute for the flexibility of being able to write code to implement syntax expansion and being able to get things right that a rule base could never get right (for example, completing an if-else statement in C/C++).
Alias expansion is a sort of rule based approach that is user-configurable. If you have an alias that matches a syntax expansion keyword, the alias will override the default, hard coded syntax expansion. Aliases have tons of escape sequences for handling indentation and querying some data, such as the current function name or current class name.
So, now, advice for you on what strategies to choose. First, you get back what you invest time in. I would, of course, start with aliases, because they are the easiest. A useful tip to know that if you select text in the editor, you can right click for the context menu and select "Create Alias..." to create a language specific alias from that text. Auto-complete will suggest whatever aliases you create if the prefix matches the word under the cursor, so that's nearly automatic.
You may eventually find that you have items that the alias mechanism can not handle, then you can write up your own mylang_space() and mylang_expand_space() functions to implement syntax expansion for those items.