[Bekanntlich](http://mirrors.ctan.org/info/latex2e-help-texinfo/latex2e.pdf#%5Cnewcommand%20%26%20%5Crenewcommand) ist `\newcommand` mit einem obligatorischen Argument, gefolgt von zwei optionalen Argumenten, gefolgt von einem weiteren obligatorischen Argument definiert:
`\newcommand{`*Befehl*`}[`*Argumentanzahl*`][`*Default-Wert*`]{`*Definition*`}`
* *Befehl* ist der der Befehl, der definiert werden soll, im Beispiel aus der Frage also `\Kalenderblatt`.
* *Argumentanzahl* ist eine natürliche Zahl zwischen 1 und 9 und gibt die Anzahl aller Argumente an, die der Befehl verstehen soll. Im Beispiel aus der Frage ist das `2`. Es wird also ein Befehl mit zwei Argumenten definiert. Wird `\newcommand` ohne optionales Argument verwendet, so hat der definierte Befehl selbst kein Argument.
* *Default-Wert* ist die Voreinstellung für ein optionales Argument für den neuen Befehl. Das optionale Argument wird bei *Argumentanzahl* mit gezählt. Es ist bei `\newcommand` immer das erste Argument, das dann statt in geschweifte in eckige Klammern zu setzen ist (wie die optionalen Argumente von `\newcommand` auch). Um einen Befehl mit einem optionalen Argument zu definieren, muss also *Argumentanzahl* min. 1 sein und es muss zumindest ein leerer *Default-Wert* angegeben werden. Beim Aufruf des neuen Befehls wird *Default-Wert* immer dann verwendet, wenn der neue Befehl ohne optionales Argument aufgerufen wird. Wird der neue Befehl dagegen mit einem leeren optionalen Argument aufgerufen, so ist optionale Argument dann auch tatsächlich leer. In diesem Fall wird also nicht der *Default-Wert* verwendet. In der Frage ist `\Kalenderblatt` ohne optionales Argument definiert.
* *Definition* ist die Definition von *Befehl*. Innerhalb der *Definition* dienen `#1`, `#2`, `#3` … `#9` als Platzhalter für das erste, das zweite, das dritte … das neunte Argument. Ist das erste Argument optional, so steht `#1` entweder für das angegebene optionale Argument oder für *Default-Wert*, falls kein optionales Argument angegeben wurde. Für Experten (im Beispiel irrelevant): Falls Definitionen in Definitionen geschachtelt sind, muss die Anzahl der `#` für jede Schachtelungsebene (von außen nach innen) verdoppelt werden, um die Argumente von äußeren Definitionen von denen innerer Definitionen unterscheiden zu können.
Es gibt von `\newcommand` auch eine Sternform `\newcommand*`, die in der Frage auch verwendet wurde. Zu den Unterschieden siehe: [Was ist der Unterschied zwischen `\\newcommand` und `\\newcommand*`?](http://texwelt.de/wissen/fragen/12/was-ist-der-unterschied-zwischen-newcommand-und-newcommand)
Um nun also einen Befehl mit einem optionalen Argument zu definieren, sei zunächst noch einmal darauf hingewiesen, dass dieses optionale Argument dann das erste Argument sein muss, innerhalb der *Definition* also durch `#1` repräsentiert wird. Ich würde auch nicht empfehlen, direkt den Skalierungsfaktor als optionales Argument zu verwenden. Es ist flexibler das optionale Argument einfach als optionales Argument für `\includegraphics` zu deklarieren. Das sähe dann in einem auf sinnvolles verkürzten Beispiel so aus:
\documentclass[fontsize=20pt,ngerman]{scrartcl}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\newcommand*{\Kalenderblatt}[3][]{% drei Argumente, erstes optional mit leerem Default
\cleardoublepage
\begin{minipage}[c][.5\textheight]{\textwidth}
\centering
\includegraphics[#1]{#2}
\end{minipage}
\vfill
Hier stünde dann der Kalender für #3.
\clearpage
}
\begin{document}
\centering
\Kalenderblatt[scale=1.2]{example-image-a}{2018-05-01 to 2018-05-last}
\Kalenderblatt[scale=0.7]{example-image-b}{2018-06-01 to 2018-06-last}
\Kalenderblatt{example-image-c}{2018-06-01 to 2018-06-last}
\end{document}
Alles weitere zur Verwendung von `\newcommand` sollte jeder ausführlichen LaTeX-Einführung zu entnehmen sein. Ich empfehle jedem, der den Umgang mit `\newcommand` mit Argumenten noch nicht kennt, sich einmal etwas intensiver mit einer solchen Einführung zu beschäftigen. Meist sind diese eine wahre Fundgrube an Aha-Effekten. Grundlegende Informationen bietet sogar der [`usrguide`](http://mirrors.ctan.org/macros/latex/doc/usrguide.pdf). Dieser ist allerdings nicht wirklich für LaTeX-Anfänger, sondern eher für Umsteiger von LaTeX 2.09 geschrieben, geht also beispielsweise davon aus, dass man die generelle Bedeutung von `#1` etc. bereits kennt.
Will man einen Befehl definieren, bei dem das optionale Argument nicht das erste ist oder das mehr als ein optionales Argument hat, so sei auf »[Ist es möglich eigene Befehle mit mehr als einem optionalen Argument zu definieren?](http://texwelt.de/wissen/fragen/8404/ist-es-moglich-eigene-befehle-mit-mehr-als-einem-optionalen-argument-zu-definieren)« verwiesen. Spätestens nach dem Verstehen obiger Erklärung zu `\newcommand` sollte auch jene Frage und die Antwort(en) grundsätzlich zu verstehen sein.sein. Dort findet man auch die Erklärung zur Definition von Befehlen mit Argument mit Hilfe von `\NewDocumentCommand` wie sie in der [ursprünglichen Frage](http://texwelt.de/wissen/fragen/21511/calendar-variation) ebenfalls verwendet wurden. Die dort ebenfalls verwendeten Definitionen mit [`expl3`](http://ctan.org/pkg/l3kernel)-Syntax sind davon jedoch unabhängig und abweichend. Dort gibt man letztlich die Argumentanzahl wie bei `\def` durch Anreihung von `#1` `#2` etc. an. Erfahrene LaTeX-Anwender seien diesbezüglich auf die Doku zum [LaTeX3-Kern](https://ctan.org/pkg/l3kernel) verwiesen.