Your code looks good. Just add & for the missing column and a few % here and there and define a columntype Y and everything turns out nicely. :-)
\documentclass[a4paper,twoside,openright,12pt]{book}
\usepackage[left=1.5cm,right=1cm,top=2.5cm,bottom=2.5cm,marginparwidth=0cm,marginparsep=0cm,outer=1cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{tabularx,colortbl}
\usepackage{showframe}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand{\only}[6]{%
\begin{table}[h!]%
\caption{#1}%
\centering
\begin{tabularx}%
{\linewidth}{ l | Y | Y | Y | Y |}%
\cline{2-5}%
& #2 & #3 & #4 & #5 \\\hline
\multicolumn{1}{|l|}{$R_1$} & & & & \\ \hline
\multicolumn{1}{|l|}{$R_2$} & & & & \\ \hline
\multicolumn{1}{|l|}{$R_3$} & & & & \\ \hline
\multicolumn{1}{|l|}{$R_4$} & & & & \\ \hline
\multicolumn{1}{|l|}{$R_5$} & & & & \\ \hline
\end{tabularx}%
\end{table}%
}
\begin{document}
\twocolumn
\only{Reading\label{tab:read}}{Colors}{Value}{Tolerance}{Power}
Table \ref{tab:read} is very important.
\end{document}

Off the cuff I can offer some nested looping for automatizing the creation of the tables.
\documentclass[a4paper,twoside,openright,12pt]{book}
\usepackage[left=1.5cm,right=1cm,top=2.5cm,%
bottom=2.5cm,marginparwidth=0cm,%
marginparsep=0cm,outer=1cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage{lmodern}
\usepackage{tabularx,colortbl}
%\usepackage{showframe}
\makeatletter
%%-------------------------------------------------------------------------
%% Paraphernalia:
%%.........................................................................
\newcommand\UD@firstoftwo[2]{#1}%
\newcommand\UD@secondoftwo[2]{#2}%
\newcommand\UD@bracestripexchange[2]{#2#1}%
%%----------------------------------------------------------------------
%% Check whether argument is empty:
%%......................................................................
%% \UD@CheckWhetherNull{<Argument which is to be checked>}%
%% {<Tokens to be delivered in case that argument
%% which is to be checked is empty>}%
%% {<Tokens to be delivered in case that argument
%% which is to be checked is not empty>}%
%%
%% The gist of this macro comes from Robert R. Schneck's \ifempty-macro:
%% <https://groups.google.com/forum/#!original/comp.text.tex/kuOEIQIrElc/lUg37FmhA74J>
%%
\newcommand\UD@CheckWhetherNull[1]{%
\romannumeral0\expandafter\UD@secondoftwo\string{\expandafter
\UD@secondoftwo\expandafter{\expandafter{\string#1}\expandafter
\UD@secondoftwo\string}\expandafter\UD@firstoftwo\expandafter{\expandafter
\UD@secondoftwo\string}\expandafter\expandafter\UD@firstoftwo{ }{}%
\UD@secondoftwo}{\expandafter\expandafter\UD@firstoftwo{ }{}\UD@firstoftwo}%
}%
%%-----------------------------------------------------------------------------
%% \UD@ActOnFirstListElement{<action>}%
%% {<action when no (more) arguments are in list>}%
%% {<preset>}%
%% {{<e_k>}{<e_(k+1)>}..{<e_n>}}%
%% yields either: <action when no (more) arguments are in list><preset>
%% or: <action>{<e_k>}<preset>{{<e_(k+1)>}..{<e_n>}}
%%
%% ( The "list" in question is {<e_k>}{<e_(k+1)>}..{<e_n>} )
%%.............................................................................
\newcommand\UD@KeepFirstTillSelDOM{}%
\long\def\UD@KeepFirstTillSelDOM#1#2\UD@SelDOM{{#1}}%
\newcommand\UD@ActOnFirstListElement[4]{%
\expandafter\UD@CheckWhetherNull\expandafter{\UD@secondoftwo#4.{}}%
{#2#3}%
{%
\expandafter\expandafter
\expandafter \UD@ExtractFirstListElementLoop
\expandafter\UD@bracestripexchange
\expandafter{%
\expandafter{%
\UD@firstoftwo{}#4}}{{#4\UD@SelDOM}{#1}{#3}}%
}%
}%
\newcommand\UD@ExtractFirstListElementLoop[3]{%
\expandafter\UD@CheckWhetherNull\expandafter{\UD@firstoftwo{}#1}%
{#2#1#3}%
{%
\expandafter\UD@ExtractFirstListElementLoop
\expandafter{%
\UD@KeepFirstTillSelDOM#1}{#2}{#3}%
}%
}%
%%-------------------------------------------------------------------------
%% David Kastrup's \replicate:
%%.........................................................................
%% <http://www.gust.org.pl/projects/pearls/2005p/david-kastrup/bachotex2005-david-kastrup-pearl3.pdf>
\newcommand\DK@recur[1]{\csname DK@rn#1\DK@recur}%
\newcommand\DK@rnm[1]{\endcsname{#1}#1}%
\newcommand\DK@rn[1]{}%
\newcommand\DK@replicate[1]{\csname DK@rn\expandafter\DK@recur
\romannumeral\number\number#1 000\endcsname\endcsname}%
%%-----------------------------------------------------------------------------
%% \CreateTable[<caption>]{<columns>}{<rows>}
%% a caption will be placed only in case the optional
%% <caption> is neither empty nor holding only a space token.
%%.............................................................................
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand*\CreateTable[3][]{%
\expandafter\UD@CheckWhetherNull\expandafter{\UD@secondoftwo#2.{}}{%
\@latex@error{No table-columns specified}{Specify at least one table-column.}%
}{%
\expandafter\UD@CheckWhetherNull\expandafter{\UD@secondoftwo#3.{}}{%
\@latex@error{No table-rows specified}{Specify at least one table-row.}%
}{%
\UD@ActOnFirstListElement{\@CreateTableHead}
{\@CreateTableRows{#3}{#1}}%
{%
{1}{0}{}{l|}%
{\@CreateTableHead}{\@CreateTableRows{#3}{#1}}%
}%
{#2}%
}%
}%
}%
\newcommand\@CreateTableHead[7]{%
\begingroup
\@tempcnta=#2\relax
\advance\@tempcnta by 1\relax
\expandafter\UD@bracestripexchange
\expandafter{\expandafter{\expandafter{\the\@tempcnta}%
%{#2}{#4}{#5X|}{#6}{#7}}}%
{#2}{#4}{#5Y|}{#6}{#7}}}%
{\endgroup\UD@ActOnFirstListElement{#6}{#7}}%
}%
%
\newcommand\@CreateTableRows[8]{%
\begin{table}[h!]%
\expandafter\UD@CheckWhetherNull\expandafter{\UD@secondoftwo#2.{}}%
{}{\caption{#2}}%
\centering
\begin{tabularx}{\linewidth}{#6}%
\cline{2-#3}%
#5\\\hline
\UD@ActOnFirstListElement{\@CreateTableRow}%
{\expandafter\@gobbletwo\@gobble}%
{{#4}{\@CreateTableRow}{\expandafter\@gobbletwo\@gobble}}%
{#1}%
\end{tabularx}%
\end{table}%
}%
\newcommand\@CreateTableRow[4]{%
\multicolumn{1}{|l|}{#1}\DK@replicate{#2}{&}\\\hline
\UD@ActOnFirstListElement{#3}{#4}{{#2}{#3}{#4}}%
}%
\makeatother
\begin{document}
\CreateTable[Reading\label{tab:read}]%
{{Colors}{Value}{Tolerance}{Power}}%
{{$R_1$}{$R_2$}{$R_3$}{$R_4$}{$R_5$}}%
\CreateTable[AnotherReading\label{tab:anotherread}]%
{%
{Col 1}{Col 2}{Col 3}{Col 4}{Col 5}{Col 6}%
{Col 7}{Col 8}{Col 9}{Col 10}{Col 11}{Col 12}%
}%
{%
{$R_1$}{$R_2$}{$R_3$}{$R_4$}{$R_5$}%
{$R_6$}{$R_7$}{$R_8$}{$R_9$}{$R_{10}$}%
}%
\end{document}

An approach using expl3-Syntax could be:
\documentclass[a4paper,twoside,openright,12pt]{book}
\usepackage[left=1.5cm,right=1cm,top=2.5cm,%
bottom=2.5cm,marginparwidth=0cm,%
marginparsep=0cm,outer=1cm]{geometry}
\usepackage{xparse}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\ExplSyntaxOn
\seq_new:N \l_header_seq
\seq_new:N \l_row_seq
\int_new:N \l_columns_int
\cs_new:Npn \row_add_mc:n #1
{
#1\seq_map_function:NN \l_header_seq \emptycell_add_mc:n\\\hline
}
\cs_new:Npn \emptycell_add_mc:n #1
{
&
}
\cs_new:Npn \headcell_add_mc:n #1
{
& #1
}
% \mytable{caption}[label]{column headers}{row headers}
\NewDocumentCommand\CreateTable{ m O{#1} mm}{
\seq_set_from_clist:Nn \l_header_seq {#3}
\seq_set_from_clist:Nn \l_row_seq {#4}
\int_set:Nn \l_columns_int {\seq_count:N \l_header_seq }
\begin{table}[h!]
\centering
\caption{#1}\label{tab:#2}%
\begin{tabularx}{\linewidth}{|l *{\l_columns_int}{|Y}|}%
\cline{2-\int_eval:n{ \l_columns_int+1} }%
\multicolumn{1}{c|}{}\seq_map_function:NN \l_header_seq \headcell_add_mc:n\\\hline
\seq_map_function:NN \l_row_seq \row_add_mc:n
\end{tabularx}%
\end{table}%
}
\ExplSyntaxOff
\begin{document}
\CreateTable{Reading}[read]{Colors,Value,Tolerance,Power}{$R_1$,$R_2$,$R_3$,$R_4$,$R_5$}
\bigskip
\CreateTable{Another Reading}[anotherread]
{Col 1,Col 2,Col 3,Col 4,Col 5,Col 6, Col 7,Col 8,Col 9,Col 10,Col 11,Col 12 }
{$R_1$, $R_2$, $R_3$, $R_4$, $R_5$, $R_6$, $R_7$, $R_8$, $R_9$, $R_{10}$}
See Table~\ref{tab:read} and Table~\ref{tab:anotherread}
\end{document}
\only. In all the other tables you can usecfor a centred table of natural width or, if you want to centre aptype column or anXtype column, you can use>{\centering\arraybackslash}X(if thearraypackage is loaded). – Skillmon Aug 12 '18 at 17:12