For scaling, add the transform shape option. That might not look too great though. You are probably better off modifying the minimum size and the circle. To label the sides you can use distance modifiers on the anchors, same for the corner points. For the angle you can either use tkz-euclid or (if you know the angle (or are willing to guess it like me)) you can just draw an arc. To generalize this to an n-gon, use a parameter instead of the for-loop (which does nothing now...) and draw using that. Of course the angle and the corresponging AB line won't be correct anymore, but the labelling will. This is what the code would look like:

\documentclass[10pt,a4paper]{article}
\usepackage{mathtools}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{backgrounds}
\usepgflibrary{shapes}
\usetikzlibrary{through}
\begin{document}
\begin{figure}[!htpb] \centering
\begin{tikzpicture}
\pgfmathsetmacro{\a}{6}
\newcounter{temp}
\draw[dashed] (\a*2,0) circle(3cm);
\node[regular polygon, regular polygon sides=\a, minimum size=6cm, draw, blue, fill=blue!20] (poly) at (\a*2,0) {};
\foreach [count=\side] \siide in {2,3,...,\a,1}{
  \pgfmathtruncatemacro{\opp}{mod(\side+\a/2,\a)}
  \pgfmathtruncatemacro{\opp}{ifthenelse(equal(\opp,0),\a,\opp)}
  \pgfmathtruncatemacro{\opi}{ifthenelse(equal(mod(\a,2),0),1,0)}
  \def\oppp{\ifnum\opi=0 poly.side \opp\else poly.corner \opp\fi}
  \node at ($(poly.side \side)!.15!270:(poly.corner \siide)$)  {\side};
  \node at ($(\oppp)!1.05!(poly.corner \side)$) {\setcounter{temp}{\side}\Alph{temp}};
}
\coordinate (S) at ($(poly.corner 5) + (100:3)$);
\begin{scope}
  \path[clip] (poly.corner 4) -- (S) -- (poly.corner 5) -- cycle;
  \path[draw,blue,fill=blue!50] (S) circle[radius=.4];
  \path (S) ++(255:.6) node {$\alpha$};
\end{scope}
\node at ($(poly.corner 4)!.5!(poly.corner 5)$) [above] {$DE = 16$cm};
\node at (S) [above] {S};
\path[draw,dashed] (poly.corner 5) -- (S) -- (poly.corner 4);
\end{tikzpicture}
\end{figure}
\end{document}


To clarify the code a little bit, the distance modifiers work as follows: (A)!x!a:(B) means take the point that is factor x on the line from A to B, then rotate it by a degrees around A. This allows us to place the labels roughly where we want them, without having to explicitly set them (the angles might need slight adjusting for larger polygons).

And the resulting output:



EDIT: Changed the code to place the labels to use the opposite corner. It uses the opposite side if the number of sides is odd. This way the placement of the labels will work for n-gons for pretty much any value of n. I also changed the angle to use the clipping approach instead of estimating it. Finally, I changed the way the node is drawn on the line, to ensure there is no difference in colour.

That makes the result looks like this, showing the normal hexagon and a 9-gon:



Hexagon with exscribed triangle
If you are unable to move forward when drawing a 10, do you have to move backwards 1?
