I am sure that there is a more efficient way of dealing with your starbursts (for example, using LaTeX3), but the code below deals with them by first defining a comma separated list of special numbers and them looping through all of them to see if there is a match. The numbers mod 5 are easy to deal with using \pgfmathparseresult.
The end result is then:

Here is the code:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{stix}
\usepackage{tikz}
\usetikzlibrary{shapes,shapes.geometric,calc}
\usepackage{pifont}
\usepackage{wasysym}
\usepackage{graphicx}
\newif\ifnotfound% to mark the stars as we print them
\newcommand\starbursts{3,6,11,13,17,23,29,37,43,52,56,61,63,68,69,71,72,80,91,99}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (0:1);
\foreach \x in {1,...,100}{%
\coordinate (c) at ($(b)!0.9cm!270:(a)$);
\pgfmathparse{int(mod(\x,5))}
\ifnum\pgfmathresult=0
\node[fill=white,draw,regular polygon, regular polygon sides=5,inner sep=1pt] at (c) {$\x$};
\else
\notfoundtrue% this will mark any starbursts
\foreach \y in \starbursts {% check for stars
\ifnum\x=\y% a star is born!
\node[fill=white,draw,starburst,inner sep=1pt] at (c) {$\x$};
\global\notfoundfalse% need \global as inside a loop
\fi
}
\ifnotfound% we have not printed a node yet
\node[fill=white,draw,circle,inner sep=1pt] at (c) {$\x$};
\fi
\fi
\coordinate (b) at (c);
};
\end{tikzpicture}
\end{document}
EDIT
Here's a LaTeX3 version. The code is much neater but it is also slower in the sense that my laptop returns the following timings:
tikz: real 2.436 user 2.136 sys 0.281 pcpu 99.18
tikz: real 2.479 user 2.169 sys 0.294 pcpu 99.34
expl: real 2.557 user 2.250 sys 0.293 pcpu 99.45
expl: real 2.552 user 2.238 sys 0.301 pcpu 99.49
The output is the same as above. Here's the revised code:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{stix}
\usepackage{tikz}
\usetikzlibrary{shapes,shapes.geometric,calc}
\usepackage{pifont}
\usepackage{wasysym}
\usepackage{graphicx}
\tikzset{
mynode/.style = {fill=white,draw,inner sep=1pt}
}
\usepackage{expl3}
\ExplSyntaxOn
\clist_new:N \l_starbursts
\clist_set:Nn \l_starbursts {3,6,11,13,17,23,29,37,43,52,56,61,63,68,69,71,72,80,91,99}
\newcommand\SetNode[1]{
\int_compare:nTF { \int_mod:nn { #1 } { 5 } = 0 }
{\tikzset{mynode/.append~style={regular~polygon, regular~polygon~sides=5}}}
{
\clist_if_in:NoTF \l_starbursts {#1}
{\tikzset{mynode/.append~style={starburst}}}
{\tikzset{mynode/.append~style={circle}}}
}
}
\cs_generate_variant:Nn \clist_if_in:NnTF {noTF}
\ExplSyntaxOff
\newif\ifnotfound% to mark the stars as we print them
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (0:1);
\foreach \x in {1,...,100}{%
\coordinate (c) at ($(b)!0.9cm!270:(a)$);
\SetNode{\x}
\node[mynode] at (c) {$\x$};
\coordinate (b) at (c);
};
\end{tikzpicture}
\end{document}
EDIT II
Here is a third "plain TeX" approach following jfbu's suggestion and where the stars take precedence over the hexagons (unlike above, as pointed out by sgmoye in the comments). I switched to plain TeX because, surprisingly, using LaTeX3 sequences in a similar fashion led to slower code. Perhaps clists would be better? It could also be that the first solution draws the nodes directly whereas solutions II and III use some \tikzset{...} trickery. Anyway, here is the code:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{stix}
\usepackage{tikz}
\usetikzlibrary{shapes,shapes.geometric,calc}
\usepackage{pifont}
\usepackage{wasysym}
\usepackage{graphicx}
\tikzset{
mynode/.style = {fill=white,draw,inner sep=1pt}
}
\newcommand\starbursts{3,6,11,13,17,23,29,37,43,52,56,61,63,68,69,71,72,80,91,99}
\def\setnextstar#1,#2!{%
\if\relax\detokenize{#1}\relax\gdef\nextstar{200}\else\gdef\nextstar{#1}\gdef\starbursts{#2}\fi%
}
\expandafter\setnextstar\starbursts,,!
\newcommand\SetNode[1]{
\ifnum#1=\nextstar
\tikzset{mynode/.append style={starburst}}
\expandafter\setnextstar\starbursts!
\else
\pgfmathparse{int(mod(\x,5))}
\ifnum\pgfmathresult=0
\tikzset{mynode/.append style={regular polygon, regular polygon sides=5}}
\else
\tikzset{mynode/.append style={circle}}
\fi
\fi
}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (0:1);
\foreach \x in {1,...,100}{%
\coordinate (c) at ($(b)!0.9cm!270:(a)$);
\SetNode{\x}
\node[mynode] at (c) {$\x$};
\coordinate (b) at (c);
};
\end{tikzpicture}
\end{document}
The output is slightly different in that 80 now has a star.

\xwith the first: if<do nothing, if equal do the "star is born" and suppress that (leading) entry from list, if>you made a coding error somewhere. There should also be a flag to signal the starburst list is now empty. – Dec 03 '18 at 10:5380is just such a one: it is in the starburst list but is enclosed in a pentagon. Is this intended? – sgmoye Dec 03 '18 at 12:11