get_term_by “name” not working with & in name

The characters <, >, &, ” and ‘ (less than, greater than, ampersand, double quote and single quote) are enconded in term names. & becomes &amp;. This is done by passing the term object to sanitize_term() function which applies several filters. By default WordPress applies theses filters: sanitize_text_field(), wp_filter_kses() and _wp_specialchars() (see wp-includes/default-filters.php), this last function encondes <, >, &, ” and ‘.

So, you need to do:

$value = "Website Development &amp; Designing"
get_term_by('name',$value,'skills');

Or, for unknown values:

get_term_by( 'name', esc_attr( $value ), 'skills');

NOTE: use esc_attr(), not _wp_specialchars() directly because _wp_specialchars() is marked as private function and it is not intended for use by plugin or theme developers.