Yes you can make your own Head.
Bit I'm afraid I don't actually understanding your question as it is written. Are you asking how to make a fuction?
If you have a background with programming already, I would recommend this introduction.
http://www.mathprogramming-intro.org/
Here is how you make your own head in Mathematica:
hereIsMyHead[]
You just write it. That's it. There's no grand declaration of its existence or anything. If you want it to do something ... you can program that head to do something. For example, we can program the head to do something to an argument, which basically makes it a function:
hereIsMyHead[a_] := "The Head Called hereisMyHead was given " <> ToString[a] <> " as an argument
The Wolfram Language isn't really typed. As you have noted, heads take the place of types in many respects.