You’ll use them in two completely different situations. Ideally, the output is the same when you’ve used both of the syntax in the right situation.
In your template, you will use [[*createdon:date=`%Y`]] to output the year a resource was published.
This tag is placed in the resource directly - and therefore uses the [[*resourcefield]] syntax..
When you are using a snippet, for example getResources, you will most likely want to modify what the output looks like, so you specify a property in the snippet call called "tpl", and pass the name of a chunk (for example "listingtpl") as its value. Your call could look like this: [[getResources? &tpl=`listingtpl` &parents=`1,3` &limit=`5`]]. Now what the snippet does (to put it real simple) is get a list of 5 resources (&limit=`5`) that match your criteria (it’s a child resource of resource 1 or 3).
When it has the data, it will start going through them, and output them using your chunk. To give you control over what shows up you made the chunk, which may look like this:
[[+pagetitle]] was created in the year [[+createdon:date=`%Y`]]
You will notice the
placeholder syntax: it uses [[+createdon]] here, with the date filter. When the snippet (getResources) outputs your chunk, it will specify the value of the placeholders (so every time it outputs a chunk, for each resource being listed, it gives a value to the placeholders). Or to put it differently:
your placeholder tag ([[+createdon]]) will be replaced with the value the snippet assigns it at that moment.
So it’s all about where you can use it. Resource fields need to be
directly on a resource (in the template, in a content field or even in a chunk called in a template or content field) where as you can only use placeholder tags
when they have been set by a snippet - usually by specifying the chunk in the snippet call, which the snippet uses to output the requested information.